用于程序执行和错误日志的变量 "Set" 的正确语法
Correct syntax of the variable "Set" for program execution and error log
我正在创建无人值守的批处理文件程序,但在正确检测 运行 变量方面遇到问题。
SET installjava=JAVA\jre-8u111-windows-i586.exe /s AUTO_UPDATE=0 WEB_ANALYTICS=0 REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1 || ECHO "%time% Java install did not complete." >> "%Temp%\ERROR.TXT"
应该使用什么语法来正确运行安装文件和关于程序的错误日志?
您可以使用:
SET "installjava=JAVA\jre-8u111-windows-i586.exe /s AUTO_UPDATE=0 WEB_ANALYTICS=0 REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1 || ECHO %time% Java install did not complete.>> "%Temp%\ERROR.TXT""
环境变量 installjava
必须通过立即扩展来引用,即 %installjava%
才能真正作为命令行执行。
请参阅关于 Why is no string output with 'echo %var%' after using 'set var = text' on command line? 为什么使用语法 set "variable=value"
的答案,这是必要的,因为运算符 ||
和 >>
在分配时被解释为文字字符环境变量的命令行。
ECHO 没有双引号,因为这些双引号也会写入错误日志文件。重定向运算符 >>
的左侧也没有 space 来将错误消息写入错误日志文件而没有尾随 space 字符。
我正在创建无人值守的批处理文件程序,但在正确检测 运行 变量方面遇到问题。
SET installjava=JAVA\jre-8u111-windows-i586.exe /s AUTO_UPDATE=0 WEB_ANALYTICS=0 REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1 || ECHO "%time% Java install did not complete." >> "%Temp%\ERROR.TXT"
应该使用什么语法来正确运行安装文件和关于程序的错误日志?
您可以使用:
SET "installjava=JAVA\jre-8u111-windows-i586.exe /s AUTO_UPDATE=0 WEB_ANALYTICS=0 REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1 || ECHO %time% Java install did not complete.>> "%Temp%\ERROR.TXT""
环境变量 installjava
必须通过立即扩展来引用,即 %installjava%
才能真正作为命令行执行。
请参阅关于 Why is no string output with 'echo %var%' after using 'set var = text' on command line? 为什么使用语法 set "variable=value"
的答案,这是必要的,因为运算符 ||
和 >>
在分配时被解释为文字字符环境变量的命令行。
ECHO 没有双引号,因为这些双引号也会写入错误日志文件。重定向运算符 >>
的左侧也没有 space 来将错误消息写入错误日志文件而没有尾随 space 字符。