在同一文件夹结构中创建临时备份文件

时间:2015-09-08 18:19:31

标签: powershell

下面是一些文件的完整路径,这些文件具有我正在寻找的特定文件模式。这些文件并非都位于同一位置,但是,我想更改" .gen"到" .tmp"在短时间内保持" .gen"完整的。

D:\Example\CommonData\Settings\ConnectionSettings.config.gen 
D:\Example\CommonData\Settings\FileExtensions.config.gen
D:\Example\WebApps\Website\Web.config.gen
D:\Example\Test\SCM\Config.Files\Some.Other.thing.config.gen 

我想做什么:

D:\Example\CommonData\Settings\ConnectionSettings.config.gen
D:\Example\CommonData\Settings\ConnectionSettings.config.tmp 
D:\Example\CommonData\Settings\FileExtensions.config.gen
D:\Example\CommonData\Settings\FileExtensions.config.tmp
D:\Example\WebApps\Website\Web.config.gen
D:\Example\WebApps\Website\Web.config.tmp
D:\Example\Test\SCM\Config.Files\Some.Other.thing.config.gen
D:\Example\Test\SCM\Config.Files\Some.Other.thing.config.tmp  

我到目前为止已尝试过:

Get-ChildItem *.config.gen | ForEach {
  $NewName = $_.Name -replace ".config.gen$", ".config.tmp"
  Copy-Item $_ $NewName
}

我尝试使用xcopyrobocopyCopy-Item更轻松地做些什么?如果是这样,我将如何使用Copy-Item以外的其他内容。

1 个答案:

答案 0 :(得分:1)

由于您希望重命名的目标项Get-ChildItem / Copy-Item是更好的方法。这样的事情应该有效:

Get-ChildItem *.config.gen -Recurse |
  Copy-Item -Destination { Join-Path $_.Directory ($_.BaseName + '.tmp') }