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

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

我有一个名为的文件夹,其中有一个名为的文件:'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 ...?

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

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

答案1

我想复制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

进一步阅读

答案2

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

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

如果输出看起来正常,请删除复制前面的回显。

解释/f 选项的解析:

文件名 old_2301 Item 1.xlsx
分隔符 _
代币 1 _ * (其余)
对于变量 %%A %%B

不含批处理的命令行变体:

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

答案3

除非我真的想要一个可以反复运行的程序,否则如果这只是一次性或几次,我会使用 Notepad++ 或任何其他具有块复制和粘贴功能的文本编辑器。在相关目录中打开命令提示符并键入dir/b > 1.txt,结果为:

D:\MiscJunk\1>type 1.txt
1.txt
old_2014 Item 2.txt
old_2301 Item 1.txt
old_5321 Item 3.txt
template.txt

在 Notepad++ 中编辑 1.txt 并根据需要添加以下行:

copy template.txt ""
copy template.txt ""
copy template.txt ""

块复制(Alt Shift 箭头键)文本:

2014 Item 2.txt
2301 Item 1.txt
5321 Item 3.txt

并将其粘贴到引号之间:

copy template.txt "2014 Item 2.txt"
copy template.txt "2301 Item 1.txt"
copy template.txt "5321 Item 3.txt"

然后检查命令是否正确并进行相应调整后,只需将这些命令复制并粘贴回命令提示符中,结果如下:

D:\MiscJunk\1>dir/b
2014 Item 2.txt
2301 Item 1.txt
5321 Item 3.txt
...

这种方法非常简单,无需调试,出错的可能性很小。在 Notepad++ 中敲入命令块是我经常做的事情。

相关内容