2013-03-27 110 views
1

我這裏有一個問題,匹配第一個字符在MS-DOS

我想要寫在文件中匹配一個字符,然後exec的一些命令,但我有這個毛病,..!你可以嘗試這些命令..

c:>\echo 1 >file.txt 
c:>\set /p var=<file.txt 
c:>\if %var% EQU "1" (echo 21) ELSE (echo 10) 

你會得到的值是10,我嘗試另一種方式寫入文件中的變量。

c:>\set /p=1 <nul>file.txt 
c:>\set /p var=<file.txt 
c:>\if %var% EQU "1" (echo 21) ELSE (echo 10) 
如果您要查看的 file.txtvar數據

c:>\type file.txt 
1 
c:>\echo %var% 
1 
c:>\if %var% EQU "1" (echo 21) ELSE (echo 10) 
10 

感謝幫助。

+0

我非常懷疑你正在使用MS DOS ......你真的在使用什麼操作系統? XP和更新的命令提示符與MS DOS非常不同。如果您在NT 6+上執行某些命令,您的操作系統也可能很重要。另外,你的問題到底是什麼?你想匹配什麼? – 2013-03-27 16:22:02

+2

您的%var%不是「1」,它是「1」。使用echo驗證 - %var% - – Stephan 2013-03-27 16:23:37

+0

問題是「if」sintax,右邊是: _if%var%EQU 1(echo 21)ELSE(echo 10)_ – 2013-05-20 10:03:01

回答

1

隨着set /a命令,您可以從數值變量中刪除不需要隱形空間。試試這個:

C:\>echo 1 >file.txt 

C:\>set /p var=<file.txt 

C:\>set /a var=%var% 
1 
C:\>if "%var%" EQU "1" (echo 21) ELSE (echo 10) 
21 
1

正如斯蒂芬所建議的,您正在呼應1*space*file.txt。嘗試把你的重定向在該行的開頭,就像這樣:

>file.txt echo 1 

你也可以在括號括起來echo命令,像這樣:

(echo 1)>file.txt 

我覺得>file.txt echo 1(echo 1)>file.txt更具可讀性,但你的里程可能有所不同。

不幸的是,你不能簡單地1後去除空間解決問題,因爲CMD將它解釋爲echo stdout>file.txtfile.txt將有內容ECHO is on.

0

謹防行後的空白,ECHO 1>file.txt會將STDOUT的輸出指向文件,因爲您在重定向器之前有一個數字。

ECHO 1 >file.txt 
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+ 
(ECHO 2) >file.txt 
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+ 
>file.txt ECHO 3 
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+ 
>file.txt (ECHO 4) 
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+ 

接下來的一點是,1var的內容,這是不等於"1"

環境變量始終是字符串。

糾正這if "%var%" equ "1" (echo 21) ELSE (echo 10)

相關問題