使用新名称复制并粘贴文件 200 次

Ste*_*fin 3 windows-7 copy-paste cmd.exe

我有一个文件夹,其中包含一个名为: 的文件'template.xlsx',以及数百个名为:

  • old_2301 Item 1.xlsx
  • old_2014 Item 2.xlsx
  • old_5321 Item 3.xlsx
  • ...
  • old_3212 Item 200.xlsx

我想复制文件template.xksx并创建 200 个新文件:

  • 2301 Item 1.xlsx
  • 2014 Item 2.xlsx
  • 5321 Item 3.xlsx
  • 3212 Item 200.xlsx

我试过这样的事情:

在文件夹中,输入Shift+右移:选择“在此处打开命令窗口”

for %a in (*.*) do copy "template.xlsx" ... ren ...?
Run Code Online (Sandbox Code Playgroud)

我想将复制的template.xlsx文件重命名为与其他文件相同的名称,但要old_删除。

有没有一种简单的方法可以做到这一点?

Dav*_*ill 11

我想复制template.xlsx到其他文件的名称,old_删除

使用以下批处理文件:

@echo off
setlocal enabledelayedexpansion
rem get list of file names
for /f "usebackq tokens=*" %%i in (`dir /b old_*.xlsx`) do (
  rem save the filename
  set _name=%%i
  rem remove old_ from the name
  set _name=!_name:old_=!
  rem do the copy to the modified name
  copy "template.xlsx" "!_name!"
  )
endlocal
Run Code Online (Sandbox Code Playgroud)

进一步阅读


Lot*_*ngs 6

您必须使用命名old_*为名称源的文件并在下划线处拆分。

@Echo off
For /f "tokens=1* delims=_" %%A in (
    'Dir /B /A-D "old_* Item *.xlsx"'
) Do Echo Copy template.xlsx "%%B"
Run Code Online (Sandbox Code Playgroud)

如果输出看起来不错,请删除副本前面的回声。

解释 /f 选项的解析:

文件名 old_2301 项目 1.xlsx
熟食_
代币 1 _ * (休息)
对于 var %%A %%B

没有批处理的命令行的变体:

For /f "tokens=1* delims=_" %A in ('Dir /B /A-D "old_*.xlsx"') Do Copy template.xlsx "%B"
Run Code Online (Sandbox Code Playgroud)