批处理文件从原点复制到多个目标

时间:2013-12-06 00:45:05

标签: batch-file file-io

我正在寻找批处理文件来完成以下任务:

  1. 批处理文件查看某个位置的文件夹和子文件夹(例如:\ server1 \ main \及其子文件夹),并根据文件名称的前3个字母将文件复制到多个与其姓名对应的文件夹。

  2. 复制完成后,我想将原始文件/文件夹移动到存档目录。

  3. 文件格式如下:AAA_xxx_xxx.jpg - 文件名的前3个字母是我们关心的。

    示例:

    • 文件\\server1\main\AAA\AAA_xxx_xxx.jpg将被复制到\\server2\files\AAA\
    • 文件\\server1\main\BBB\BBB_xxx_xxx.jpg将被复制到\\server2\files\BBB\

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\one"
SET "sourcedir2=U:\sourcedir\t w o"
SET "destdir=U:\destdir"
SET "targetdir=U:\targetdir"
FOR %%d IN ("%sourcedir%" "%sourcedir2%") DO (
 FOR /f "tokens=1*delims=_" %%a IN (
   'dir /b /a-d "%%~d\*_*.jpg" '
   ) DO (
  ECHO(MD "%destdir%\%%a\"
  ECHO(COPY /y "%%~d\%%a_%%b" "%destdir%\%%a\"
  ECHO(MOVE "%%~d\%%a_%%b" "%targetdir%\"
 )
)

GOTO :EOF

您需要更改sourcedirsourcedir2destdirtargetdir的设置以适应您的具体情况。

所需的MD命令仅用于ECHO用于测试目的。 在您确认命令正确之后,将ECHO(MD更改为MD以实际创建目录。附加2>nul以禁止错误消息(例如,当目录已存在时)

为了测试目的,所需的MOVE命令仅为ECHO在您确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加>nul以取消报告消息(例如1 file moved

为了测试目的,所需的COPY命令仅为ECHO在您确认命令正确后,将ECHO(COPY更改为COPY以实际复制文件。

哦 - 做完这项工作后,我发现我是重新格式化的受害者,这个问题有胡须。哦,好吧 - 也许它会帮助别人。