我試圖創建一個腳本來重命名指定的文件名匹配的文件,用通配符,字符串匹配的文件。例如的PowerShell V2 - 重命名其名稱包含通配符
我有一個包含文件夾中的以下文件:
- 201412180900_filename_123.log
- 201412181000_filename_123.log
- 201412181100_filename_456.log
- filename_789.log
我要掃描通過該文件夾,並將當前時間附加到以wor開頭的任何文件的開頭d '文件名'
我見到目前爲止以下內容:
$d = Get-Date -format "yyyyMMddHHmm"
$dir = "C:\test"
$file = "filename*.log"
get-childitem -Path "$dir" | where-object { $_.Name -like "$file" } | rename-item -path $_ -newname $d."_".$_.name
,但它不工作。 當我看到它的各個部分「應當」的工作從我的文檔閱讀,但很明顯,什麼是錯的。如果有人能指出它,將不勝感激。
我們越來越近了。這樣看來,-path
在rename-item
部分必須$dir$_
爲$_
(貌似)只包含文件名。 (一開始幫助例子表明它需要的完整路徑和文件名),如果我參加了命名項部分,並與%{write-host $d"_"$_}
取代它,它提供了正確的新文件名
然而,簡單地把這個
到rename-item
部分仍然不更新文件名。
rename-item -path $dir$_ -newname $d"_"$_
成功
正確的語法似乎是:
get-childitem -Path "$dir" | where-object { $_.Name -like "$file" } | %{rename-item -path $dir$_ -newname $d"_"$_}
缺少的元素是在%{ ... }
圍繞rename-item
部分,這使我引用$_
當你運行它時會發生什麼*如果我可能會問? – 2014-12-19 12:04:04
「它不起作用」對嘗試幫助你沒有用處。描述發生了什麼以及你期望發生什麼。 – alroc 2014-12-19 12:06:24
對不起,我應該更清楚一點,基本上當我運行它時,什麼都不會發生。沒有錯誤信息。但文件名不會改變。我期望發生的事情是要麼得到一個錯誤消息,要麼文件名應該改變。 – IGGt 2014-12-19 13:14:23