powershell - 文件重命名后,管道复制项不起作用

标签 powershell pipeline copy-item

我对 PowerShell 还很陌生。

我创建了一个 PowerShell 脚本,它根据特定条件从一个文件夹中的大量非常相似的文件中识别特定的 Mp3 文件:

  1. 是最近创建的文件
  2. 这是一个 MP3 文件
  3. 文件名中有特定的字符集。

然后,该文件将重命名为今天的日期,并在文件名中添加一些其他文本:

$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/

相关文章:

windows - 如何将图标与自定义应用程序相关联(使用 powershell 脚本注册)

notifications - 在GitLab中通知所有组成员失败的管道

Powershell 复制项目目标不明确

file - 尽管文件夹已被删除,但移动项目会导致 "File Already Exists"错误

windows - 从 cmd.exe 迁移到 PowerShell 或使用 PowerShell 代替其他工具。什么时候使用 PowerShell 更好?

powershell - 音频媒体的Powershell播放详细信息

c 在某些情况下导致程序挂起的管道

c# - 如何在C#中实现真正的函数管道?

powershell - 从 get-childitem 搜索中排除路径

powershell - 不支持复制项目失败的给定路径格式