我试图创建一个脚本来重命名指定的文件名匹配的文件,用通配符,字符串匹配的文件。例如的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