2012-09-20 22 views
8

मैं एक बैट स्क्रिप्ट लिखने की कोशिश कर रहा हूँ और मैं निम्नलिखित है:डॉस (cmd) में बंद @echo

@echo off 
REM Comments here 
SETLOCAL ENABLEDELAYEDEXPANSION 
set PROG_ROOT=C:\Prog 
set ONE=1 

echo 1>> %PROG_ROOT\test.txt 
echo %ONE%>> %PROG_ROOT\test.txt 

for /f "tokens=*" %%f in (folders.txt) do (
    echo %%f>> %PROG_ROOT\test.txt 
) 

ENDLOCAL 

मेरे folders.txt संख्या "5" में शामिल है।

मेरे test.txt उत्पादन

ECHO is off 
ECHO is off 
5 

मुझे समझ नहीं आता क्यों उत्पादन के पहले 2 लाइनों है "ECHO बंद है", जबकि तीसरी लाइन सही ढंग से मुद्रित किया जाता है। मैं सही आउटपुट कैसे प्रिंट करूं?

ईटीए: मैं

echo 1>> %PROG_ROOT\test.txt 
echo %ONE% >> %PROG_ROOT\test.txt 

की कोशिश की और मैं मुद्रित करने के लिए

ECHO is off 
1 

हालांकि, मैं नहीं संख्या के बाद पीछे अंतरिक्ष मुद्रित करने के लिए की जरूरत में सक्षम था।

उत्तर

6

1> (और अधिक आम तौर पर किसी भी n> अंकों n के लिए) एक पुनर्निर्देशन के रूप में व्याख्या की है, और इस तरह echo 1>> कोई तर्क के साथ एक echo रूप cmd प्रतीत होता है। echo कोई तर्क नहीं के साथ वर्तमान echo स्थिति प्रिंट करेगा (यहां, ECHO is off)।

ठीक करने के लिए, एक ^ चरित्र के साथ पूर्णांक भागने:

echo ^1>> %PROG_ROOT\test.txt 
+0

यह है कि! धन्यवाद! – Rayne

+1

या पुनर्निर्देशन को आगे बढ़ें: '>>% PROG_ROOT% \ test.txt echo% ONE%' – dbenham