[英]PowerShell File rename
如果文件重命名过程中文件名已包含字符串,如何忽略文件重命名。
我的例子:
Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" | Rename-Item -NewName { $_.Name -replace "\.csv", "TC.csv" }
我只想重命名文件名中没有字符串“ TC”的文件-例如:
abc.csv
重命名
defTC.csv
不想重命名
您可以使用正则表达式过滤掉不需要重命名的文件:
?{!($_.fullname -match "TC\.csv")}
因此,以您的示例为例:
Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" |
?{!($_.fullname -match "TC\.csv")} |
Rename-Item -NewName { $_.Name -replace "\.csv", "TC.csv" }
将日期过滤器并入其中,如下所示:
Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" |
?{!($_.fullname -match "TC\.csv") -and $_.CreationTime -ge (get-date).AddDays(-1).Date} |
Rename-Item -NewName { $_.Name -replace "\.csv", "TC.csv" }
作为一个更简单,更直接的解决方案,您可以过滤到ForEach循环中并使用IF语句。 可能效率不高,但易于维护和适应其他用途。
Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" | Foreach-Object {
if ($_.Name -notlike "*TC*") {
Rename-Item $_ ($_.Name -Replace "\.csv", "TC.csv")
}
}
或者,将其传递给Where过滤器,然后传递给重命名(请注意,此特定语法需要PS v3):
Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" | Where Name -notlike "*TC*" | Rename-Item $_ ($_.Name -Replace "\.csv", "TC.csv")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.