Batch file 使用批处理将文件从一个文件夹复制到另一个文件夹

Batch file 使用批处理将文件从一个文件夹复制到另一个文件夹,batch-file,file-copying,Batch File,File Copying,我正在尝试使用批处理将一些文件从一个目录复制到另外两个目录 首先,我制作了3个目录,然后,我想将以下文件复制到backup1和backup2。 文件名为010101.txt-300101.txt(用于备份1)和010102.txt-300102.txt(用于备份2) 我想我必须以某种方式使用通配符,但是如果我写1.txt和2.txt,我会得到一个syntex错误。试试这个: @echo off setlocal enabledelayedexpansion cd /d "C:\Temp\cop

我正在尝试使用批处理将一些文件从一个目录复制到另外两个目录

首先,我制作了3个目录,然后,我想将以下文件复制到backup1和backup2。 文件名为010101.txt-300101.txt(用于备份1)和010102.txt-300102.txt(用于备份2)

我想我必须以某种方式使用通配符,但是如果我写1.txt和2.txt,我会得到一个syntex错误。

试试这个:

@echo off
setlocal enabledelayedexpansion

cd /d "C:\Temp\copytest"
set "b1=C:\Temp\Backup1"
set "b2=C:\Temp\Backup2"
for /l %%a in (1,1,300102) do (
  set num=%%a
  if %%a GTR 10000 if %%a LSS 100000 set num=0%%a
  if !num:~-1! EQU 1 (
     if exist !num!.txt echo copy !num!.txt %b1%
  ) ELSE (
     if !num:~-1! EQU 2 (
       if exist !num!.txt echo copy !num!.txt %b2%
     )
  )
)
在适用的情况下更改路径。验证输出是否正确后,移除回声以进行实际复制

编辑:更简单的方式

Copy *1.txt "C:\User\Test\Backup1"
Copy *2.txt "C:\User\Test\Backup2"
@ECHO关闭
SETLOCAL
设置“sourcedir=”
对于(1 2)中的%%b,请执行以下操作(
对于/f“delims=”%%a IN(
'dir/b/a-d“%sourcedir%\*.txt”^ find/i“%%b.txt”
)做(
XCOPY“%sourcedir%\%%a”c:\user\test\backup%%b\”>nul
)
)
后藤:EOF
我假设您希望将目录中包含
1.txt
的所有文件复制到…\backup1,并将包含
2.txt
的文件复制到…\backup2

我使用当前目录进行测试。您需要更改分配给“sourcedir”的值以适合自己


请注意,
xcopy
将在必要时创建目标目录。

这些范围是目录中唯一的文件吗?您是否在
010101.txt-300101.txt和010102.txt-300102.txt
中显示了4个文件,因为如果它们是范围,那么它们会重叠。有那些60.txt文件和一些.bat文件以及备份目录也在那里。这就是你的意思吗?不,是文件。有一个名为010101.txt的文件,每个数字最多为300101.txt,另一个30.txt文件以02结尾。我说得够清楚了吗?嘿,马特,谢谢你的回答,但这是我想要的。这是一个学校作业,我们正在学习编程。我必须能够解释我在做什么。根据我的老师的说法,只要使用“复制”命令和“通配符”就可以做到这一点。我就是不知道该怎么做。再次感谢您抽出时间!这就解决了!事实上,我以前也尝试过,但忽略了“.非常感谢:-”)谢谢你的帮助!找到了一个更简单的解决方案。但是谢谢你的时间。首先,我想创建一个带有日期和时间的备份文件夹,然后我想在上面保存过去的文件,我如何才能做到这一点?
Copy *1.txt "C:\User\Test\Backup1"
Copy *2.txt "C:\User\Test\Backup2"