【问题标题】:Executing a command with string doesn't work in powershell使用字符串执行命令在 powershell 中不起作用
【发布时间】:2017-01-09 06:25:57
【问题描述】:

这是我的代码,它不起作用:

$brisanje=dat.txt, dat2.txt
Remove-Item $brisanje

我在这里得到的错误是

删除项目:找不到路径“C:\Users\stefan\Desktop\brisanjedat\dat.txt, dat2.txt”,因为它不存在。

但是当我这样写它时,它就像一个魅力:

Remove-Item dat.txt, dat2.txt

我被这个问题困扰了好几个小时,有什么解决办法吗?

【问题讨论】:

  • $brisanje="dat.txt","dat2.txt"
  • 谢谢,它有效

标签: powershell


【解决方案1】:

PowerShell 解析器有 two modes,具体取决于上下文。

参数模式 上下文中(如 Remove-Item dat.txt,dat2.txt 的情况),它将裸词视为可扩展字符串的列表。

表达式模式(默认)中,表达式开头的裸词被视为命令,powershell 将尝试解析它,这就是您看到错误的原因。

使用引号确保解析器知道您的意思是 dat1.txt,dat2.txt 是一个字符串数组:

$brisanje="dat.txt","dat2.txt"

查看Get-Help about_Parsing 的输出了解更多信息

【讨论】:

    【解决方案2】:

    在您的代码中使用点 (.) 源代码也是一个好主意。 Shells 和 Scripts 有不同的作用域,当你点源变量时,你将两者结合起来。我对所有内容都进行了点源,尤其是当我一遍又一遍地使用它或在不同的环境中使用它时。

    cd C:\Users\stefan\Desktop\brisanjedat\ $brisanje= ".\dat.txt",".\dat2.txt" Remove-Item $brisanje

    【讨论】:

      猜你喜欢
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      相关资源
      最近更新 更多