用于程序执行和错误日志的变量 "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 字符。