我有一个批处理脚本,它接受任意数量的参数(文件列表)并使用以下命令结构执行powershell脚本:
"%POWERSHELL%" -Command "%SCRIPT%" %*
%POWERSHELL%
是PowerShell.exe
的路径,而%SCRIPT%
是我的powershell脚本,用于解释接收%*
$args
的{{1}}。问题是,如果我传入文件名test$file.name
之类的内容,PowerShell会收到test.name
,大概是因为$file
被解释为空变量。
是否有一种很好的方法可以使用批处理脚本中的单引号或反引号来转义每个参数,或以其他方式处理此问题?
答案 0 :(得分:5)
在将%*传递给PowerShell脚本之前转义$字符。
set ARGS=%*
set ARGS=%ARGS:$=`$%
"%POWERSHELL%" -Command "%SCRIPT%" %ARGS%