乐闻世界logo
搜索文章和话题

How to run an EXE file in PowerShell with parameters with spaces and quotes

2 个月前提问
2 个月前修改
浏览次数31

1个答案

1

在PowerShell中运行带有空格和引号的参数的EXE文件,确实需要特别注意参数的处理,尤其是在涉及路径和字符串时。为了正确执行这样的命令,我们可以采用以下几种方法:

1. 使用单引号和双引号结合

在PowerShell中,单引号用于定义字面量字符串,双引号用于解释字符串中的变量和表达式。当EXE路径或参数本身包含空格和引号时,可以使用这两种引号来确保命令解析正确。

例如: 假设你需要运行位于C:\Program Files\MyApp的应用程序example.exe,并传递一个包含空格和引号的参数,比如"Hello World":

powershell
& 'C:\Program Files\MyApp\example.exe' '"Hello World"'

这里,外层的单引号' '用来确保路径作为一个整体被传递,而内层的双引号" "则确保参数中的空格不会导致参数被拆分。

2. 使用转义字符

另一种方法是使用反引号`来转义PowerShell中的特殊字符,例如路径中的空格或参数中的引号。

例如

powershell
& "C:\Program Files\MyApp\example.exe" "`"Hello World`""

在这个例子中,反引号`用于转义双引号,使其被视为参数的一部分,而不是字符串的结束符。

3. 将参数存储在变量中

将复杂的参数先存储在一个变量中,这样可以提高脚本的可读性和易维护性。

例如

powershell
$argument = '"Hello World"' & "C:\Program Files\MyApp\example.exe" $argument

这种方法清晰明了,可以使命令行调用更加直观。

4. 使用Start-Process Cmdlet

Start-Process是PowerShell提供的一个cmdlet,它可以用来启动外部程序,并且在处理路径和参数时提供了更多的灵活性。

例如

powershell
Start-Process -FilePath "C:\Program Files\MyApp\example.exe" -ArgumentList "`"Hello World`""

这里使用-FilePath指定可执行文件,-ArgumentList用来传递参数,参数内的引号同样需要使用反引号来转义。

结论

处理带有空格和引号的参数时,确保正确地引用和转义是关键。根据具体的需求和偏好,你可以选择最适合的方法来确保命令的正确执行。在实际操作中,建议对各种可能的参数值进行充分的测试,以验证脚本的健壮性。

2024年7月22日 03:40 回复

你的答案