批量复制和重命名文件到相应的目录(CLI / PowerShell)

时间:2017-02-16 18:16:23

标签: batch-file copy command-line-interface rename batch-rename

假设我有一个名为api-build009.jar的文件,它存在于多个目录中。

D:\InstallDir\subdir1\
D:\InstallDir\subdir2\subdir21\
D:\InstallDir\subdir3\
D:\InstallDir\subdir4\subdir41\
D:\InstallDir\subdir5\
D:\InstallDir\subdir6\subdir61\subdir62\
D:\InstallDir\subdir7\
D:\InstallDir\subdir8\

我想将文件备份(并因此重命名)到与原始文件相同的目录中。我想对上面的所有目录(在本例中为8)执行此操作,复制原始文件,然后将其重命名为api-build009.jar.bak

D:\InstallDir\subdir1\api-build009.jar.bak
D:\InstallDir\subdir2\subdir21\api-build009.jar.bak
D:\InstallDir\subdir3\api-build009.jar.bak
D:\InstallDir\subdir4\subdir41\api-build009.jar.bak
D:\InstallDir\subdir5\api-build009.jar.bak
D:\InstallDir\subdir6\subdir61\subdir62\api-build009.jar.bak
D:\InstallDir\subdir7\api-build009.jar.bak
D:\InstallDir\subdir8\api-build009.jar.bak

如何使用Windows CLI或PowerShell执行此过程?

先谢谢你。

1 个答案:

答案 0 :(得分:1)

编写a file后 - 听起来像是同一个文件,然后在同一文件夹中编写备份the file。这些不同版本或同一文件的副本 这些脚本会使用.bak扩展名

将文件复制到相同的名称和位置

批量

@Echo off
PushD "D:\InstallDir"
For /f "delims=" %%A in (
  'Dir /B/S api-build009.jar'
) Do Echo Copy "%%~fA" "%%~fA.bak"
Popd

PowerShell的

Get-ChildItem -Path D:\InstallDir -File -Filter api-build009.jar|
  ForEach { Copy-Item $_.FullName -Destination "$($_.Fullname).bak" -whatif}

如果输出看起来没问题,请删除脚本中批处理/ echo中的-whatif