我正在尝试使用批处理将一些文件从一个目录复制到另外两个目录。
首先我制作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错误。
答案 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
将创建目标目录。