Batch file 要从一个源复制到多个目标的批处理文件

Batch file 要从一个源复制到多个目标的批处理文件,batch-file,file-io,Batch File,File Io,我正在寻找批处理文件以完成以下任务: Batch file可查看某个位置的文件夹和子文件夹(例如:\server1\main\及其子文件夹),并根据文件名的前3个字母将文件复制到与其名称对应的多个文件夹中 复制完成后,我想将原始文件/文件夹移动到存档目录 文件格式如下:AAA_xxx_xxx.jpg-文件名的前3个字母是我们关心的 例如: 文件\\server1\main\AAA\AAA\u xxx\u xxx.jpg将被复制到\\server2\Files\AAA\ 文件\\server1\

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

  • Batch file可查看某个位置的文件夹和子文件夹(例如:\server1\main\及其子文件夹),并根据文件名的前3个字母将文件复制到与其名称对应的多个文件夹中

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

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

    例如:

    • 文件
      \\server1\main\AAA\AAA\u xxx\u xxx.jpg
      将被复制到
      \\server2\Files\AAA\
    • 文件
      \\server1\main\BBB\BBB\u xxx\u xxx.jpg
      将被复制到
      \\server2\Files\BBB\
    @ECHO OFF
    SETLOCAL
    设置“sourcedir=U:\sourcedir\one”
    设置“sourcedir2=U:\sourcedir\t w o”
    设置“destdir=U:\destdir”
    设置“targetdir=U:\targetdir”
    对于(“%sourcedir%”“%sourcedir2%”中的%%d,请执行以下操作(
    对于/f“tokens=1*delims=\%%a IN(
    “dir/b/a-d”%%~d\*.*.jpg”
    )做(
    回显(MD“%destdir%\%%a\”
    回显(复制/y“%%~d\%%a\%%b”“%destdir%%\%%a\”
    回显(移动“%%~d\%%a\%%b”“%targetdir%%”
    )
    )
    后藤:EOF
    
    您需要更改
    sourcedir
    sourcedir2
    destdir
    targetdir
    的设置以适应您的情况

    所需的MD命令仅用于测试目的。
    ECHO
    ed。验证命令正确后,将
    ECHO(MD
    更改为
    MD
    以实际创建目录。追加
    2>nul
    以抑制错误消息(例如,当目录已存在时)

    所需的移动命令仅用于测试。
    ECHO
    在验证命令正确后,更改
    ECHO(MOVE
    MOVE
    以实际移动文件。追加
    >nul
    以抑制报告消息(例如
    1个文件已移动

    所需的复制命令仅用于测试。
    ECHO
    在验证命令正确后,将
    ECHO(COPY
    更改为
    COPY
    ,以实际复制文件


    哦-完成这项工作后,我发现我是一个重新格式化的受害者,这个问题有很多问题。哦,好吧-也许这会帮助其他人。

    你没有指定你正在使用的操作系统-听起来像Windows,但这不清楚-这很重要。另外,你尝试过什么吗?p.s.你如何确定是复制到服务器1还是服务r 2?假设
    %filename%
    等于
    AAA_xxx_xxx。jpg
    -
    %filename:~0,3%
    将因此等于
    AAA
    。请仔细研究。我还建议您深入了解您是如何尝试实现这一目标的。@EdCottrell:“批处理文件”是一个常用于Windows批处理文件的术语(以前是MS-DOS批处理文件)。批处理文件字符串操作确实是这个问题的本质所在。除了@Unclesmeat的有用链接外,您还可以在这个网站上搜索有关该主题的现成解决方案。这里只有一个已解决的问题: