linux shell 任意字符,脚本 – 在Powershell中,如何从字符串执行任意本机命令?

Invoke-Expression,也别名为iex。以下将适用于您的示例#2和#3:

iex $command

一些字符串不会按原样运行,例如您的示例#1,因为exe在引号中。这将按原样工作,因为字符串的内容是如何直接从Powershell命令提示符运行:

$command = 'C:\somepath\someexe.exe somearg'

iex $command

但是,如果exe是引号,你需要&以使其运行,如在此示例中,从命令行运行:

>> &"C:\Program Files\Some Product\SomeExe.exe" "C:\some other path\file.ext"

然后在脚本中:

$command = '"C:\Program Files\Some Product\SomeExe.exe" "C:\some other path\file.ext"'

iex "& $command"

可能的,你可以处理几乎所有的情况,通过检测命令字符串的第一个字符是否是“,就像在这个朴素的实现:

function myeval($command) {

if ($command[0] -eq '"') { iex "& $command" }

else { iex $command }

}

但你可能会发现一些其他情况下,必须以不同的方式调用。在这种情况下,您将需要使用try {} catch {},也许用于特定的异常类型/消息,或检查命令字符串。

如果你总是收到绝对路径,而不是相对路径,你不应该有许多特殊情况,如果有的话,在上面的2之外。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值