बैच: फ़ाइल में विशेष वर्णों के साथ एक सेट / पी कैसे गूंजें?


2

मैं एक स्क्रिप्ट पर काम कर रहा हूँ जहाँ मेरे पास निम्नलिखित कोड हैं:

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
echo %msg% >> File.txt
goto top
:cancel

मैं सेट / पी को स्वीकार करने के लिए एक रास्ता खोज रहा हूं &^*<>?|और वह सब सामान और अभी भी इसे फाइल में गूंज रहा हूं । क्या यह संभव है? वर्तमान में स्क्रिप्ट सिर्फ क्रेज की है

जवाबों:


1

विधि 1: विलंबित विस्तार

एक तरीका जो आप चाहते हैं वह है विलंबित विस्तार का उपयोग करना जो विशेष वर्णों को अकेला छोड़ देता है।

विलंबित विस्तार के कारण पार्स समय के बजाय निष्पादन समय में एक बैच फ़ाइल के भीतर चर का विस्तार होगा, यह विकल्प SETLOCAL EnableDelayedExpansion कमांड के साथ चालू होता है।

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
setlocal EnableDelayedExpansion
echo !msg! >> File.txt
endlocal
goto top
:cancel

जैसा कि आप देख सकते हैं, आपको !msg!इसके बजाय उपयोग करने की आवश्यकता होगी %msg%

विधि 2: उद्धरण

वैरिएबल के आसपास कोट्स को रखने से विशेष वर्ण भी अकेले निकल जाते हैं, साथ ही उन उद्धरणों के प्रभाव से आपके आउटपुट में भी पास हो जाते हैं।

:top  
Echo Enter Message
set /p msg=">"
if "%msg%"=="C" goto cancel
echo "%msg%" >> File.txt
goto top
:cancel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.