[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样在多个文件夹中有选择地批量复制指定文件?

在 D:\EmpireServer\web\flash 目录下:
有a文件夹和b文件夹,还有文件1.txt 它里面记录了两行数据,分别是 1.swf和2.swf
a文件夹里面有1.swf b.swf m.swf 等等很多个文件,b文件夹里面有2.swf 6.swf m888.swf 等等很多个文件,

现在我想用批处理把1.txt中所记录的1.swf和2.swf 从ab这两个文件夹里面复制到E:/images 下里面,并且要自动建立a文件夹和b文件夹,并复制1.swf和2.swf到对应的文件夹。

还有一个说明的是a和b文件夹这两个名字只是举例,实际应用中要随机变化。


下面是我正在使用的批量处理代码,但它不够智能,没能达到我上面所说的效果。
  1. @echo off
  2. for /f "tokens=*" %%a in (1.txt) do (
  3. for /f "tokens=*" %%i in ('dir /s/b/a-d %%a') do (
  4. copy "%%~dpnxi" 1
  5. )
  6. )
复制代码

[ 本帖最后由 cyucyu 于 2010-3-14 21:30 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  1. @echo off
  2. set NameList="1.swf" "2.swf"
  3. set Source="D:\EmpireServer\web\flash"
  4. set Dest="E:\images"
  5. cd /d %Source%
  6. for /f "delims=" %%f in ('dir /a:-d /s /b %NameList%') do (
  7.     for %%u in ("%%f\..") do (
  8.         md %Dest%\"%%~nxu" 2>nul
  9.         copy "%%f" %Dest%\"%%~nxu"
  10.     )
  11. )
  12. pause
复制代码

[ 本帖最后由 test2010 于 2010-3-14 11:11 编辑 ]
1

评分人数

TOP

楼上的大哥你好!
set NameList="1.swf" "2.swf"
因为这这两个文件只是举例,实际应用中有很多个文件,文件名都记录在1.txt这个文件里面。
能不能直接读取1.txt里面的文件名呀。
麻烦你指教一下。

TOP

  1. @echo off
  2. set "Source=D:\EmpireServer\web\flash"
  3. set "Dest=E:\images"
  4. cd /d "%Source%"
  5. for /f "delims=" %%a in (1.txt) do (
  6.     for /f "delims=" %%f in ('dir /a-d /s /b "%%a"') do (
  7.         for %%u in ("%%f\..") do (
  8.             md "%Dest%\%%~nxu" 2>nul
  9.             copy "%%f" "%Dest%\%%~nxu"
  10.         )
  11.     )
  12. )
复制代码
Do All in Command Line

TOP

谢谢两位大哥。特别谢谢  BatCoder 大哥。你写的很好用。

但还有一点点小问题。
比如在 D:\EmpireServer\web\flash\minjie 这个目录下有A和B两个子目录。
复制到E:\images这里的时候目录结构就变了。

如果复制到E盘后目录结构是E:\images\minjie\a和E:\images\minjie\b的话,这样就完美了。

现在复制后的结果是E:\images\a和E:\images\b

现在我想要的是和D:\EmpireServer\web\flash\下目录结构保持一致,不管它的目录和子目录有几个。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "Source=D:\EmpireServer\web\flash"
  4. set "Dest=E:\images"
  5. cd /d "%Source%"
  6. for /f "delims=" %%a in (1.txt) do (
  7.     for /f "delims=" %%f in ('dir /a-d /s /b "%%a"') do (
  8.         set "str=%%~dpf"
  9.         set "folder=!str:%Source%=!"
  10.         md "%Dest%!folder!%%~nxu" 2>nul
  11.         copy "%%f" "%Dest%!folder!%%~nxu"
  12.     )
  13. )
复制代码
Do All in Command Line

TOP

谢谢  BatCoder 大哥。非常感谢您。

终于可以完美解决了一直困扰我的问题。

TOP

我按照这个批处理的结果有几个目录,请高手解答一下!

我按照这个程序运行后,怎么出现了两个文件夹
一个文件夹是我需要的
还有一个文件夹下面有多个子目录,每个子目录还有重复的文件

TOP

返回列表