gpt4 book ai didi

windows - 在 PowerShell 命令中首先评估变量

转载 作者:可可西里 更新时间:2023-11-01 11:27:24 27 4
gpt4 key购买 nike

我试图让 PowerShell 在执行命令之前评估变量,例如:

$OutputPath = "C:\Temp"  
Get-ChildItem -include *.mp3 | Move-Item -Destination $OutputPath

但是,Move-Item cmdlet 试图从字面上解释它,所以它不会被移动。每当我直接输入路径时,该脚本都可以正常工作,但我需要能够使用变量控制路径。我该怎么做?

最佳答案

这个答案可能会演变,但正如你的问题一样,我看到了一个大问题,不幸的是,这个问题没有得到很好的记录。 -Include-Exclude 仅在与 -Recurse 配合使用时执行其预期功能。不使用它可以产生 0 个结果。在您的情况下,这意味着没有任何内容通过管道传递,并且 Move-Item 未执行。

目前您只是在 *.mp3 上过滤,这是基本的,只能与 -filter 参数一起使用。虽然您不需要,但我建议您也指定 -Path,以便您移动所需的文件。

Get-ChildItem -Filter *.mp3 | Other-Stuff ...

您在评论中提到了以下错误:

Move-Item : Cannot create a file when that file already exists.

该错误非常具体。无论是从以前的测试还是对新名称的疏忽,该文件确实已经存在。您可以做两件事来帮助解决这个问题,那就是使用 -WhatIf 开关,它应该引用详细流中的文件路径,以便您知道文件的最终位置。

其次,如果你了解数据风险,就是使用-Force,这样文件就会被新文件覆盖。使用 Copy-Item 这没什么大不了的,因为原始文件仍然存在。 Move-Item 的错误可能是永久性的。

关于windows - 在 PowerShell 命令中首先评估变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574804/

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