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

Mass Copy and Rename files into same respective directories (CLI/PowerShell)

假设我有一个名为 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 执行此过程?

提前致谢。

一旦你写入 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