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

时间:2014-02-20 15:11:24

标签: batch-file file-copying

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

首先我制作3个目录,之后,我想将以下文件复制到backup1和backup2。 这些文件名为010101.txt - 300101.txt(To backup1)和010102.txt - 300102.txt(backup2)。

mkdir backup1
mkdir backup2
mkdir backup3
copy 1.txt C:\User\Test\Backup1
copy 2.txt C:\User\Test\Backup2

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

2 个答案:

答案 0 :(得分:1)

试试这个:

@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"

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=."
FOR %%b IN (1 2) DO (
 FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*.txt" ^| find /i "%%b.txt" '
   ) DO (
  XCOPY "%sourcedir%\%%a" "c:\user\test\backup%%b\" >nul
 )
)
GOTO :EOF

我假设您希望将包含1.txt的目录中的所有文件复制到... \ backup1,将那些包含2.txt的文件复制到... \ backup2。

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

请注意,如果需要,xcopy将创建目标目录。