替换部分文件名Powershell

时间:2014-03-04 20:33:24

标签: powershell

我有每天早上生成的文件:

  • Default_20140227_05.00.29.csv
  • Default_20140226_05.00.29.csv

我想重命名文件:

  • VOD_20140227_05.00.29.csv
  • VOD_20140226_05.00.29.csv

我基本上会用Default替换VOD

我正在使用Powershell 1.0。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:8)

我没有PowerShell 1.0进行测试,但假设您在文件所在的文件夹中运行它,您可以尝试:

Get-ChildItem Default_*.csv  |Rename-Item -NewName {$_.name -replace '^Default','VOD'}

答案 1 :(得分:5)

简化为:

x <- c(3, 1.2, 3.1, 1, 1.0, 5)

split(x, round(x) == x)

$`FALSE`
[1] 1.2 3.1

$`TRUE`
[1] 3 1 1 5

答案 2 :(得分:1)

gci | ?{$_.Name -like "Default*"} | % {$newname = ([String]$_).Replace("Default","VOD"); Rename-item $_ $newname}

更具说明性的版本:

$DefaultFiles =  Get-ChildItem | Where-Object {$_.Name -like "Default*"}
ForEach($File in $DefaultFiles) 
{
    $newname = ([String]$File).Replace("Default","VOD")
    Rename-item -Path $File $newname
}

答案 3 :(得分:0)

如果您正在寻找一个通用版本,它将您的查找和替换作为参数并注销您重命名的内容(方便,imo),这里是 Cole9350 的一座建筑answer

$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
}

如果你想递归,只需在 -Recurse

后添加 Get-ChildItem