Windows CMD如何将参数传递给脚本并保存到其中一个参数的文件名
我想将以下参数传递给脚本:Windows CMD如何将参数传递给脚本并保存到其中一个参数的文件名,windows,command-line,cmd,dos,Windows,Command Line,Cmd,Dos,我想将以下参数传递给脚本: myscript.cmd "Foo" "Bar" "File" 其中,第三个参数应添加扩展名.log SET logFile = "%~3" + .log echo logFileName is "%logFile%" echo %date% %time% got parameters "%~1" "%~2" >> "%logFile%" 在本例中,它应该是File.log SET logFile = "%~3" + .log echo logFil
myscript.cmd "Foo" "Bar" "File"
其中,第三个参数应添加扩展名.log
SET logFile = "%~3" + .log
echo logFileName is "%logFile%"
echo %date% %time% got parameters "%~1" "%~2" >> "%logFile%"
在本例中,它应该是File.log
SET logFile = "%~3" + .log
echo logFileName is "%logFile%"
echo %date% %time% got parameters "%~1" "%~2" >> "%logFile%"
应该与上面的脚本类似,但无法使其正常工作。有三个问题:引号(包含在变量的值中)、空格(变量名称中包含空格)和连接(批处理文件中没有连接运算符)
您已经定义了一个名为logFile\uu
的变量,该变量的名称中有一个传统的空格(用下划线表示),并且指定的值是literal\ufile+.log
(如前所述,下划线表示空格)
线路
SET logFile = "%~3" + .log
^ ^^ ^^^^ Unneeded/problematic characters
应该是
SET "logFile=%~3.log"
没有传统空格且引号不包含在值中,它们只是分隔赋值,以防止行尾出现特殊字符或传统空格问题删除=周围的空格并删除无关的引号
SET logFile=%~3.log
echo logFileName is "%logFile%"
echo %date% %time% got parameters "%~1" "%~2" >> "%logFile%"
这对我很有用