gpt4 book ai didi

windows - 如何使用 PowerShell 将 DOS 风格的命令行拆分为其参数

转载 作者:可可西里 更新时间:2023-11-01 10:05:18 32 4
gpt4 key购买 nike

我有一个 Powershell 脚本(作为其选项之一)从文件中读取用户定义的预执行命令并需要执行它。用户定义的预执行命令应该是一个普通的 DOS 风格的命令。我可以按空格拆分命令,然后将其提供给 PowerShell“&”以执行它:

$preExecutionCommand = "dir D:\Test"
$preExecutionArgs = $preExecutionCommand -split '\s+'
$preExecutionCmd = $preExecutionArgs[0]
$preExecutionNumArgs = $preExecutionArgs.Length - 1
if ($preExecutionNumArgs -gt 0) {
$preExecutionArgs = $preExecutionArgs[1..$preExecutionNumArgs]
& $preExecutionCmd $preExecutionArgs
} else {
& $preExecutionCmd
}

但是如果用户定义的命令字符串有空格需要放在参数中,或者命令的路径有空格,那么我需要更聪明地解析用户定义的字符串。

肉眼很明显,下面的字符串前面有一个命令,后面跟着2个参数:

"C:\Program Files\Tool\program1" 25 "the quick brown fox"

有没有人已经有一个函数可以像这样解析字符串并返回一个数组或 DOS 风格命令列表以及每个参数?

最佳答案

有一个非常简单的解决方案。你可以为它滥用 Powershell 参数解析机制:

> $paramString = '1 blah "bluh" "ding dong" """foo"""'
> $paramArray = iex "echo $paramString"
> $paramArray
1
blah
bluh
ding dong
"foo"

关于windows - 如何使用 PowerShell 将 DOS 风格的命令行拆分为其参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958443/

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