使用
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。
编辑:
如果环境变量 password 在运行cmd.exe /? 后还可以包含在命令提示窗口中的帮助输出末尾列出的特殊字符,那么使用会更好:
@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
endlocal
通过运行set /? 或help set 输出的命令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