【发布时间】:2015-12-04 17:55:33
【问题描述】:
我正在尝试通过我的 foreach 块重命名特定目录中的文件,但没有找到任何文件。
#expected encountered filename = 3000 Miles To Graceland 2001.avi
$path = "D:\Media Holding\[UsaBit.com]_3000 Miles To Graceland 2001"
foreach($file in Get-ChildItem $path) {
"FOUND ITEM"
if (!$file.PSIsContainer) {
$fileName = $file.FullName -replace ("(\w.*?)([12]\d{3})", "$1 ($2)") -replace("\.", " ") -replace("\s{2,}", " ")
$fileExtension = $file.FullName -replace ("[^\.]*\.(\w{3,4})$", ".$1")
$fileName = $fileName + $fileExtension
Rename-Item -NewName $file $fileName
}
}
我的问题是 foreach 永远不会被输入。我可以通过控制台中永远不会显示“FOUND ITEM”的调试消息来证明这一点。
我曾尝试关注K. Brian Kelly's example of a foreach。但显然我在这里遗漏了一些东西。
我还尝试根据我在 foreach 中的替换和重命名参数重命名路径中找到的文件而不是目录。我不确定这些是否有效,如果更有经验的眼睛可以试一试,让我知道我正在尝试的方法是否可行以及是否有更好的方法,我会很高兴。
【问题讨论】:
-
$file in Get-ChildItem -LiteralPath $path -
谢谢! -path 和 -LiteralPath 有什么区别?
标签: regex powershell foreach rename