【问题标题】:Referencing Powershell array in move-item command在 move-item 命令中引用 Powershell 数组
【发布时间】:2014-02-13 01:22:31
【问题描述】:

我在编写脚本时遇到了一些问题。我正在尝试将位于一个目录中的所有文件移动到另一个目录,引用文件路径的数组(见下文)。由于某种原因它不起作用 - 当我运行该命令时,它什么也不做。

这里是源目录的内容:

  • 文件夹A
  • 文件夹B
    • subFileA.txt
  • fileA.txt
  • fileB.txt

这是我的命令:

mv .\$PRODUCTS_OLD_NAMES[0]\*  .\$PRODUCTS_NEW_NAMES[0]\newfolder

当我运行它时,什么也没有发生,也没有抛出错误。我做错了什么?


编辑CB's 回答完美,是解决方案。

【问题讨论】:

  • 我们需要知道 $PRODUCTS_OLD_NAMES 和 $PRODUCTS_NEW_NAMES 的来源。你能发布更多你的代码吗?

标签: arrays variables powershell directory


【解决方案1】:

根据 CB 的建议,这是解决方案:

mv .\$($PRODUCTS_OLD_NAMES[0])\* .\$($PRODUCTS_NEW_NAMES[0])\newfolder

注意用外部$ 符号包裹数组引用的括号。

【讨论】:

    【解决方案2】:

    尝试(假设$PRODUCTS_OLD_NAMES$PRODUCTS_NEW_NAMES 是有效路径!)使用$() -> 变量扩展语法

    mv .\$($PRODUCTS_OLD_NAMES[0])\*  .\$($PRODUCTS_NEW_NAMES[0])\newfolder
    

    【讨论】:

    • 当我按照您的建议修改复制行并运行它时,结果如下:PRODUCTS_OLD_NAMES[0] : The term 'PRODUCTS_OLD_NAMES[0]' is not recognized as the name of a cmdlet, function... 但是当我运行echo $PRODUCTS_OLD_NAMES[0] 时,我得到了预期的输出。
    • UPDATE 我错过了在你的表达中重复使用$。当我完全按照您发布的方式复制您的线路时,它运行良好。谢谢!
    • @user1347428 很高兴为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多