2017-03-16 11 views
2

PowerShellの新機能です。それはある ファイルの名前が変更された後、パイプラインのコピーアイテムが機能しない

  • 作成した最新のファイルである

    1. 私は一定の基準に基づいて、1つのフォルダに非常によく似た多数のファイルのうち、特定のMP3ファイルを特定するPowerShellスクリプトを作成しましたMP3ファイル

    2. ファイル名には特定の文字セットがあります。

    ファイル

  • は、今日の日付に名前を変更し、ファイル名に他のいくつかのテキストを追加している:

    $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"} 
    

    この部分は完璧に動作しますが、次の段階にはありません。エラーがない

    Get-ChildItem -path $AudioDir $LatestMP3 |Rename-Item -newname {(GET-DATE).ToString("yyyy-MM-dd") + " NewAUDIO.mp3"} | Copy-Item -destination $MediaDir 
    

    、ファイルが期待通りに名前を変更したがCopy-Item -destination $MediaDirは何もしません:私は別のサーバー上の別のフォルダにその名前を変更したファイルをコピーする($MediaDir = "\\Server2\Media\"

    私はパイプをしようとしています。

    ご協力いただければ幸いです。

    おかげデフォルトで

    +0

    'Copy-Item'ステップはPowershell ISEでは動作しますが、CMDやTask Schedulerでは動作しませんか? まず、 '-Verbose'と' -ErrorAction Stop'を 'Copy-Item'に追加してみてください。これはあなたにもっと冗長な出力を与えるはずです。 – qbik

    +1

    こんにちは、私は今編集したタイトルが誤解を招いて申し訳ありません。問題はcopy-item-destinationです。ファイル名が変更された後にMediaDirが動作しません。 – IanB

    答えて

    4

    Rename-Itemコマンドレットは何も返しません。それをパイプに強制しなければなりません。パイプ内にあるときはPassThruパラメータを使用してください。それは正常にコピーする必要があります。

    Get-ChildItem -path $AudioDir $LatestMP3 |Rename-Item -newname {(GET-DATE).ToString("yyyy-MM-dd") + " NewAUDIO.mp3"} -PassThru | Copy-Item -destination $MediaDir 
    
    +0

    ありがとうございますSomeShinyObject!それは完璧に働いて、私は理由も理解しています。私は毎日のことを学ぶことでこれでより良くなっています! – IanB

    +1

    喜んで助けてください。あなたの質問に答えるのを手助けした場合は、必ずチェックをクリックして、質問に答えたことを示してください。 – SomeShinyObject

    関連する問題