gpt4 book ai didi

.net - 将参数传递给exe

转载 作者:行者123 更新时间:2023-12-02 04:09:34 25 4
gpt4 key购买 nike

在很多情况下,我需要将参数传递给命令行exe。

在此站点上,我已经看到了许多这样的答案,但是到目前为止,我还没有看到关于Powershell如何处理参数的可靠的通用描述,两者都是通过cmd或start-process传递的。这是一个使我烦恼的琐碎示例:

这是 bat 脚本:

CD /D %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE
devenv /command "File.BatchNewTeamProject C:\stuff\Project51.xml"

我不了解的是Powershell如何解析这些参数。它认为什么是“参数”?

另外,规则对于启动过程是否与对cmd.exe相同?

最佳答案

试试这个来自PowerShell.com PowerTip的函数,它说明了Invoke-Expression的用法。

function Call {
$command = $Args -join " "
$command += " 2>&1"
$result = Invoke-Expression($command)
$result |
%{$e=""}{ if( $_.WriteErrorStream ) {$e += $_ } else {$_} }{Write-Warning $e}
}

这给出了:
cd "${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE"
call .\devenv.exe /command "`"File.BatchNewTeamProject C:\stuff\Project51.xml`"

-编辑-

这里有很多话要说。

首先,您可以在“about”文件中找到很好的帮助try:

获取有关-*的帮助

您对以下主题感兴趣:
Get-help about_Quoting_Rules
Get-Help about_Special_Characters
Get-Help about_Escape_Characters
Get-Help about_Parameters

第二个 CD, DIR, MD可以工作,但是它们只是CmdLets上的别名,它采用不同的参数。

获取环境变量的第三个,不再是%systemroot%,而是$env:systemroot

第四个以从powershell启动可执行文件,您只需键入exe的名称即可:
PS> notepad c:\temp\test.txt

命令行首先由powerShell解释,所以现在,如果您编写:
PS> "C:\Windows\System32\notepad.exe"
C:\Windows\System32\notepad.exe

它只是将其解释为字符串。因此,您可以使用&运算符并编写
PS> & "C:\Windows\System32\notepad.exe" c:\test.txt

它有效,但是:
PS> $a = "C:\Windows\System32\notepad.exe c:\test.txt"
PS> & $a

失败并
PS> $a = "C:\Windows\System32\notepad.exe c:\test.txt"
PS> Invoke-Expression $a

作品

关于.net - 将参数传递给exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com