我每天早上会生成一些文件:
- Default_20140227_05.00.29.csv
- Default_20140226_05.00.29.csv
我想将这些文件重命名为:
- VOD_20140227_05.00.29.csv
- VOD_20140226_05.00.29.csv
基本上,我需要用 VOD
来替换 Default
。
我正在使用 Powershell 1.0。非常感谢您的帮助。
我每天早上会生成一些文件:
我想将这些文件重命名为:
基本上,我需要用 VOD
来替换 Default
。
我正在使用 Powershell 1.0。非常感谢您的帮助。
简化版:
ls *.csv | Rename-Item -NewName {$_.name -replace "Default","VOD"}
我没有 PowerShell 1.0 进行测试,但假设您正在运行此文件夹中的文件,您可以尝试:
Get-ChildItem Default_*.csv |Rename-Item -NewName {$_.name -replace '^Default','VOD'}
gci | ?{$_.Name -like "Default*"} | % {$newname = ([String]$_).Replace("Default","VOD"); Rename-item $_ $newname}
更易理解的版本:
查找文件名以“Default”开头的文件,在文件名中将“Default”替换为“VOD”并重命名。
$DefaultFiles = Get-ChildItem | Where-Object {$_.Name -like "Default*"}
ForEach($File in $DefaultFiles)
{
$newname = ([String]$File).Replace("Default","VOD")
Rename-item -Path $File $newname
}
$Find = $args[0]
$Replace = $args[1]
$TargetFiles = Get-ChildItem | Where-Object {$_.Name -like "*$Find*"}
ForEach($File in $TargetFiles)
{
$newname = ([String]$File).Replace($Find,$Replace)
write-host "Renaming $File to $newname"
Rename-item -Path $File.PSPath $newname
}
如果你想要递归,只需在 Get-ChildItem
后面加上 -Recurse
即可。
.ps1
扩展名,而不是.cmd
- 这应该可以解决您的错误。
您还需要提供两个参数,因此如果文件名为rename.ps1
,并且您想将Hat
重命名为HeadSock
,则需要执行rename.ps1 Hat HeadSock
。 - Eris
-replace
命令会将搜索参数值视为正则表达式,因此您必须使用特殊的正则表达式字符来查找和替换某些值,例如\s
可用于查找和替换空格字符。 - oleksagci
而不是ls
,这很可能是因为ls
是一个本地命令。 - Robert Kaucher