我对 PowerShell 还很陌生。
我创建了一个 PowerShell 脚本,它根据特定条件从一个文件夹中的大量非常相似的文件中识别特定的 Mp3 文件:
- 是最近创建的文件
- 这是一个 MP3 文件
- 文件名中有特定的字符集。
然后,该文件将重命名为今天的日期,并在文件名中添加一些其他文本:
$AudioDir = "\\Server\Audio\"
$MediaDir = "\\Server2\Media\"
$LatestMP3 = Get-ChildItem -Path $AudioDir "*NEW.MP3" | Sort-Object CreationTime | Select-Object -Last 1
Get-ChildItem -path $AudioDir $LatestMP3 |Rename-Item -newname {(GET-DATE).ToString("yyyy-MM-dd") + " NewAUDIO.mp3"}
这部分工作完美,但下一步却不行。我想将该重命名的文件复制到另一台服务器上的另一个文件夹 ($MediaDir = "\\Server2\Media\"
)
我正在尝试管道:
Get-ChildItem -path $AudioDir $LatestMP3 |Rename-Item -newname {(GET-DATE).ToString("yyyy-MM-dd") + " NewAUDIO.mp3"} | Copy-Item -destination $MediaDir
没有错误,文件按预期重命名,但 Copy-Item -destination $MediaDir
不执行任何操作。
任何帮助将不胜感激。
谢谢
最佳答案
默认情况下,Rename-Item
CmdLet 不会返回任何内容。您必须将其强制放入管道中。在管道中使用 PassThru
参数,它应该可以正常复制。
Get-ChildItem -path $AudioDir $LatestMP3 |Rename-Item -newname {(GET-DATE).ToString("yyyy-MM-dd") + " NewAUDIO.mp3"} -PassThru | Copy-Item -destination $MediaDir
关于powershell - 文件重命名后,管道复制项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825692/