Echo ** Echo 3> args.txt **> X.bat,我该如何修复此代码?

时间:2015-01-03 16:54:51

标签: batch-file

回声回声3> args.txt > X.bat

我正在尝试将这行代码(Echo 3> args.txt)放入名为X的批处理文件中,但最终会发生什么

:X批处理文件
回声

:Args文本文件

内没有任何内容

它将echo(Just echo)放入x.batch并创建一个空白的args文本文件。 如何修复代码以便放置 Echo 3> args.txt 进入x批次?

1 个答案:

答案 0 :(得分:1)

使用

Echo Echo 3^> args.txt>X.bat

由于>具有特殊含义(重定向),因此必须使用^进行转义才能将其解释为文字字符。

还有一个提示:

>X.bat之前不插入空格,否则此空格将附加到创建的批处理文件中的行尾。

cmd.exe 执行此行

Echo Echo 3> args.txt 1>X.bat

另请参阅Microsoft的TechNet文章Using command redirection operators


修改

如果环境变量密码在运行cmd.exe /?后在命令提示符窗口中的帮助输出结尾列出了特殊字符,那么使用它会更好:

@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
endlocal

通过运行set /?help set,可以在命令设置输出的帮助下解释延迟的环境变量扩展。此处使用延迟扩展来避免运行此批处理文件时出现语法错误,因为环境变量密码字符串中的<>

此示例将附加到 Enter_PassCode.bat

echo var1=<hello>>args.txt

执行此批处理文件当然会导致<hello>作为密码执行时出错。

使 Enter_PassCode.bat 可执行文件没有任何错误的解决方案将是:

@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo @echo off>Enter_PassCode.bat
echo setlocal EnableDelayedExpansion>>Enter_PassCode.bat
echo set "password=!password!">>Enter_PassCode.bat
endlocal
echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
echo endlocal>>Enter_PassCode.bat

此批处理代码生成带有内容

Enter_PassCode.bat
@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo var1=!password!>args.txt
endlocal