2016-05-11 32 views
0

Get-ChildItem「C:\ temp \ test \ testsub」-Recurse -Include * .wav | %{重命名,項目$ _ -NewName( 「$ .Directory.Name.Substring(4)」 + 「($請將.Name).WAV」)}無法重命名,因爲指定的目標代表路徑或設備名稱

產生的錯誤,我不明白

[錯誤]無法重命名,因爲指定的目標代表路徑或設備名稱。

+0

你想重命名爲什麼? –

+0

請提供一些更多信息,例如原始文件名和您希望重命名爲的內容。 – Adam

回答

0

正如其他人所說,人們只能猜測你想要完成什麼,所以這裏是我的猜測。

刪除-whatif進行更改發生

Get-ChildItem 'C:\temp\test\testsub' -Recurse -Include *.wav | % {rename-item $_.fullname $($_.directory.name.substring(0, 4) + '-' + $_.name) -whatif} 
+0

這是答案,雖然我還不明白爲什麼。嘗試使用目錄名稱的前四個字符來重命名其中包含的文件。感謝斯金格先生。 – sconard

0

我猜你執行的命令如下:

Get-ChildItem "C:\temp\test\testsub" -Recurse -Include *.wav | 
    %{Rename-Item $_ -NewName ("$_.Directory.Name.Substring(4)"+"($_.Name).wav")} 

它產生:

Rename-Item : Cannot rename the specified target, because it represents a path or device name. 
At line:1 char:66 
+ ... e *.wav | %{Rename-Item $_ -NewName ("$_.Directory.Name.Substring(4)" ... 
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidArgument: (:) [Rename-Item], PSArgumentException 
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.RenameItemCommand 

這是因爲("$.Directory.Name.Substring(4)"+"($.Name).wav")包括路徑。您可以通過執行以下命令來查看它:

Get-ChildItem "C:\temp\test\testsub" -Recurse -Include *.wav | 
    % { "$_.Directory.Name.Substring(4)"+"($_.Name).wav" } 

它產生如下:

C:\temp\test\testsub\a1.wav.Directory.Name.Substring(4)(C:\temp\test\testsub\a1.wav.Name).wav 
C:\temp\test\testsub\a2.wav.Directory.Name.Substring(4)(C:\temp\test\testsub\a2.wav.Name).wav 
C:\temp\test\testsub\a3.wav.Directory.Name.Substring(4)(C:\temp\test\testsub\a3.wav.Name).wav 

按照Rename-Item help,移動和重命名項,請使用Move-Item cmdlet的。

相關問題