我正在尝试获取此字符串:
echo for /f "tokens=1 delims=" %%a in (killinput.txt) do if "%%a"=="stop" exit>> input.bat`
在input.bat文件中,但我的批处理文件在屏幕上打印此字符串,而不是在文件input.bat中输入
这是我的脚本 - >
echo for /f "tokens^=1 delims^=" %%%a in ^(killinput.txt^) do if "%%%a"^=^="stop" exit>> input.bat
这是我的输出 - >
for /f "tokens^=1 delims^=" %%a"^=^="stop" exit>> input.bat
我希望你能帮助我!日Thnx
答案 0 :(得分:1)
echo for /f "tokens=1 delims=" %%%%a in (killinput.txt) do if "%%%%a"=="stop" exit >> input.bat
您的示例中的主要问题是%%%a
。前两个百分号表示输出一个百分号,第三个符号表示变量的名称
echo for /f "tokens^=1 delims^=" %%%a in ^(killinput.txt^) do if "%%%a"^=^="stop" exit>> input.bat
^ ^
The variable is %a in ^(killinput.txt^) do if "%
由于此变量不包含任何内容,因此不会回显任何内容,结果就是你得到的结果。
答案 1 :(得分:0)
你的问题令人困惑。我假设您需要输出文件中的以下行:
for /f "tokens=1 delims=" %%a in (killinput.txt) do if "%%a"=="stop" exit
您在上面的ECHO
之前正确使用,并在最后添加了>>input.bat
。但后来你遇到了麻烦。
需要发生的关键事情是每个%
必须转义为%%
。因此%%a
需要成为%%%%a
。但是您使用了%%%a
。正如MC ND指出的那样,这个错误完全解释了你的输出。它解释了为什么IN()子句消失了,并解释了为什么输出出现在屏幕而不是输出文件上。 IN()子句和DO IF的开头被视为一个不存在的变量名称被删除。这导致不平衡的引号,这意味着现在引用重定向,因此它被视为字符串文字而不是重定向。
另一个错误是你逃脱了一些不应该被转义的引用字符。通常,您可以转义特殊字符,也可以引用它们,但不能同时引用它们。 (当然,每条规则都有例外)。
此外,在ECHO之后永远不需要转义(
,如果ECHO位于带括号的区块内,则)
只需要转义。
所以,如果这条线独立,那么就可以这么简单:
echo for /f "tokens=1 delims=" %%%%a in (killinput.txt) do if "%%%%a"=="stop" exit>>input.bat
如果该行在带括号的块内,那么它应该是:
(
echo for /f "tokens=1 delims=" %%%%a in (killinput.txt^) do if "%%%%a"=="stop" exit>>input.bat
)