1

我这里有问题

我想在文件中写入并匹配一个字符,然后执行一些命令,但我错了,..!你可以试试这些命令..

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.txtand上的数据var

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

感谢您的帮助。

4

3 回答 3

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.txt,并且file.txt会有内容ECHO is on.

于 2013-03-27T16:41:52.690 回答
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
于 2013-03-27T18:35:05.600 回答
0

当心行尾的空格,BUT 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+

下一点是那1是的内容,var等于"1"

环境变量始终是字符串。

将此更正为if "%var%" equ "1" (echo 21 ) ELSE (echo 10)

于 2013-03-27T16:59:55.227 回答