Echo **Echo 3> args.txt** >X.bat,我该如何修复这段代码?
Echo **Echo 3> args.txt** >X.bat, how do i fix this code?
Echo Echo 3> args.txt >X.bat
我试图将这行代码 (Echo 3> args.txt) 放入名为 X 的批处理文件中,但最终发生了什么
: X 批处理文件
回声
:Args 文本文件
里面什么都没有
它将 echo (Just echo) 放入 x.batch 并创建一个空白的 args 文本文件。
我该如何修复代码,以便将 Echo 3> args.txt 放入 x 批处理中?
使用
Echo Echo 3^> args.txt>X.bat
由于>
有特殊含义(重定向),必须用^
转义才能解释为字面字符。
再提示:
在 >X.bat
之前不插入 space 否则此 space 将附加到创建的批处理文件的行尾。
cmd.exe 将此行执行为
Echo Echo 3> args.txt 1>X.bat
另请参阅 Microsoft 的 TechNet 文章 Using command redirection operators。
编辑:
如果环境变量 password 也可以包含特殊字符,如在命令提示符 window 之后的帮助输出末尾所列 运行 cmd.exe /?
, 如果使用:
会更好
@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
endlocal
在运行set /?
或help set
命令set输出的帮助中解释了延迟的环境变量扩展。这里使用延迟扩展来避免 运行 这个批处理文件的语法错误,因为 <
和 >
在环境变量 password.[ 的字符串中。 =26=]
此示例将附加到 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
Echo Echo 3> args.txt >X.bat
我试图将这行代码 (Echo 3> args.txt) 放入名为 X 的批处理文件中,但最终发生了什么
: X 批处理文件
回声
:Args 文本文件
里面什么都没有
它将 echo (Just echo) 放入 x.batch 并创建一个空白的 args 文本文件。 我该如何修复代码,以便将 Echo 3> args.txt 放入 x 批处理中?
使用
Echo Echo 3^> args.txt>X.bat
由于>
有特殊含义(重定向),必须用^
转义才能解释为字面字符。
再提示:
在 >X.bat
之前不插入 space 否则此 space 将附加到创建的批处理文件的行尾。
cmd.exe 将此行执行为
Echo Echo 3> args.txt 1>X.bat
另请参阅 Microsoft 的 TechNet 文章 Using command redirection operators。
编辑:
如果环境变量 password 也可以包含特殊字符,如在命令提示符 window 之后的帮助输出末尾所列 运行 cmd.exe /?
, 如果使用:
@echo off
setlocal EnableDelayedExpansion
set "password=<hello>"
echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
endlocal
在运行set /?
或help set
命令set输出的帮助中解释了延迟的环境变量扩展。这里使用延迟扩展来避免 运行 这个批处理文件的语法错误,因为 <
和 >
在环境变量 password.[ 的字符串中。 =26=]
此示例将附加到 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