5

我有一个批处理脚本,它接受任意数量的参数(文件列表)并执行具有以下命令结构的 powershell 脚本:

"%POWERSHELL%" -Command "%SCRIPT%" %*

%POWERSHELL%是 的路径PowerShell.exe,并且%SCRIPT%是我的 powershell 脚本,它将接收的内容解释%*$args. 问题是,如果我传入类似 filename 的内容test$file.name,PowerShell 会收到test.name,大概是因为$file它被解释为一个空变量。

有没有一种好方法可以用批处理脚本中的单引号或反引号来转义每个参数,或者以其他方式处理这个问题?

4

1 回答 1

5

在将 %* 传递给 PowerShell 脚本之前转义 $ 字符。

set ARGS=%*
set ARGS=%ARGS:$=`$%
"%POWERSHELL%" -Command "%SCRIPT%" %ARGS%
于 2012-09-01T00:33:26.790 回答