2016-09-05 10 views
0

私はフォルダC:\Users\xxx\Documents\Projects\files\old\にファイルがあります。私はそれらの名前を変更するループを構築してきましたが、それはうまくいかない:ファイルの名前を変更しようとするとエラーが発生します

$newfiles = "C:\Users\xxx\Documents\Projects\files\new\" 

Rename-Item -Path $file.FullName -NewName $newfiles+"$($entry.Custom_ID).$($file.BaseName).PDF" 

私はリネームパスに適切$newfiles連結するにはどうすればよいですか?私はすべてを試みたが、エラーを得続ける:

Rename-Item : A positional parameter cannot be found that accepts argument '-' 
+1

ファイル名を変更するときに新しい名前のフォルダパスを使用することを許可されていません!ファイルを移動して名前を変更する場合は、Move-Itemコマンドレットを使用します。 – autosvet

+0

@autosvetコメント+1 ...下の私の答えを参照してください...また、 '$エントリ変数は何ですか。どうやってそれを設定していますか? – Kiran

答えて

0

これは私がいつもPowerShellで物事を連結する方法である:、

$newfiles = "C:\Users\xxx\Documents\Projects\files\new\" 

Rename-Item -Path $file.FullName -NewName ("{0}{1}.PDF" -f $newfiles,$($entry.Custom_ID).$($file.BaseName)) 

の経験から、これは常に動作します。

1

ファイルをコピーして名前を変更するか、ファイルを移動して名前を変更する必要があります。-whatifを使用すると、特定のコマンドを実行したときに何が起こるかがわかるため、良い方法です。

また、get-childitemにフィルタを使用して、pdfファイルのみを取得するので、名前を変更するファイルはPDFファイルのみになることがわかります。もちろん、oldfilesフォルダにはpdfファイルだけが含まれていれば、フィルタを使用する必要はありません。

$newfiles = "C:\Users\xxx\Documents\Projects\files\new\" 
$oldfiles = "C:\Users\xxx\Documents\Projects\files\old\" 


Get-ChildItem -Path $oldfiles -Filter *.pdf | 
Move-Item -Destination {Join-Path -Path $newfiles -ChildPath "$($entry.Custom_ID).$($_.BaseName).pdf"} -WhatIf 

または

Get-ChildItem -Path $oldfiles -Filter *.pdf | 
copy-Item -Destination {Join-Path -Path $newfiles -ChildPath "$($entry.Custom_ID).$($_.BaseName).pdf"} -WhatIf 
関連する問題