Powershell参数$args[0]带引号
我正在运行从批处理调用的PowerShell脚本,该批处理将文件名作为第一个参数传递。 在我使用的脚本中:Powershell参数$args[0]带引号,powershell,Powershell,我正在运行从批处理调用的PowerShell脚本,该批处理将文件名作为第一个参数传递。 在我使用的脚本中: $file = Get-Item -LiteralPath $args[0] 但是当文件名包含引号(即:my'file.txt)时,get item会触发错误。我试图删除-LiteralPath参数,但问题是相同的。 脚本的语法是 $file=Get Item-LiteralPath$args[0] 写入主机$file 命令/暂停 如果对我的'file.txt文件运行脚本,我会得到:
$file = Get-Item -LiteralPath $args[0]
但是当文件名包含引号(即:my'file.txt
)时,get item
会触发错误。我试图删除-LiteralPath
参数,但问题是相同的。
脚本的语法是
$file=Get Item-LiteralPath$args[0]
写入主机$file
命令/暂停
如果对我的'file.txt文件运行脚本,我会得到:
- C:\m\tag\testscript.ps1'C:\m\tag\my'file.txt'如何传递参数
这项工作:
.{gi -literalpath $args[0]} "my'file.txt"
我认为,当PowerShell看到文件名cmd时,它可能已经去掉了任何环绕双引号,因此PowerShell将单个引号视为解析错误。尝试这样指定文件名my''file.txt
假设在文件批处理中以这种方式传递路径:
您需要退出报价:powershell.exe C:\path\myscript.ps1 "%1%"
powershell.exe C:\path\myscript.ps1 \"%1%\"
有助于了解错误是什么。如果在调用
之前删除了该引号,则您将获得Get Item
类型异常,这不是PowerShell的错误,可能是消耗该字符的批处理。Thnaks Matt:我收到一个错误,该错误表示TerminatorExpectedAtEndOfString。我正在就我的问题提供更多的细节FileNotFound