重命名文件后,管道化的副本项不起作用

时间:2017-03-16 05:04:50

标签: powershell pipeline copy-item

我是PowerShell的新手。

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

  1. 是否创建了最新文件
  2. 这是一个MP3文件
  3. 文件名中有一定的字符集。
  4. 然后将该文件重命名为今天的日期,并在文件名中添加一些其他文本:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="container">
    	<div class="box">
    		<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-300 -200 800 800" enable-background="new 0 0 139.9 217.3" xml:space="preserve">
    			<g class="groupAni">
    				<rect x="0.6" y="86.6" fill="#945BA5" stroke="#000000" stroke-miterlimit="10" width="100" height="100"/>
    				<circle fill="#ED1F24" cx="4.3" cy="90.3" r="2.5"/>
    			</g>
    			<circle fill="#81C341" stroke="#000000" stroke-miterlimit="10" cx="93.5" cy="170.9" r="46.5"/>
    			<polygon fill="#FEED50" stroke="#000000" stroke-miterlimit="10" points="38.3,96 20.6,42.3 58.2,0 113.7,11.5 131.4,65.2  93.7,107.5 "/>
    		</svg>
    	</div>
    </div>

    这部分完美无缺,但下一步却没有。我想将重命名的文件复制到另一台服务器上的另一个文件夹($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 什么也没做。

    非常感谢任何帮助。

    由于

1 个答案:

答案 0 :(得分:4)

默认情况下,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