PowerShell复制和重命名同一文件夹中的文件

时间:2017-09-12 05:01:49

标签: powershell

我有一堆文件,我喜欢copyduplicate在同一个folder中,但在复制期间重命名filename部分...

实施例。 复制这些文件

¸Ó¸®30_³²_0.pal
¸Ó¸®30_³²_1.pal
¸Ó¸®30_³²_2.pal
¸Ó¸®30_³²_3.pal
¸Ó¸®30_³²_10.pal
¸Ó¸®30_³²_11.pal
¸Ó¸®30_³²_12.pal

但必须重命名为这些

¸Ó¸®31_³²_0.pal
¸Ó¸®31_³²_1.pal
¸Ó¸®31_³²_2.pal
¸Ó¸®31_³²_3.pal
¸Ó¸®31_³²_10.pal
¸Ó¸®31_³²_11.pal
¸Ó¸®31_³²_12.pal

此外,我想要input copy以及它将被重命名为... inputfiles然后copy 31 _ 41_ <我只需要input 30 _ / strong>适用于copied files ..

如果input无法使用..我可以使用硬编码值...

更新

我找到了一个复制和重命名文件的代码..

Get-ChildItem '*30_*.pal' -recurs | % {
   $copyto = $_.FullName -replace "30_","41_"
   Copy-Item $_.FullName $copyto
}

input现在正在消失......而且我不知道该怎么做......

2 个答案:

答案 0 :(得分:0)

如果你的get-childitem工作正常,这应该替换每个文件

Get-ChildItem '*30_*.pal' -Recurse |% {$_.Replace('30','31')}

答案 1 :(得分:0)

Ranadip Dutta的答案很好,但是如果第二组数字包含30,那么替换可能会出问题...例如,如果组中有更多文件而你有一个:

¸Ó¸®30_³²_30.pal

它将重命名为:

¸Ó¸®31_³²_31.pal

为了避免这种情况,请在替换中使用更多识别字符,以确保您要替换文件中正确位置的数字,如下所示:

Get-ChildItem '*30_*.pal' -Recurse |% {$_.Replace('®30','®31')}