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

[文件操作] 批处理如何通过加载列表文件的方法进行复制文件?

现有2个文件 a.txt、b.txt

其中,a.txt是我准备复制的文件及文件路径【是文件列表】(源文件);b.txt是我准备复制到的文件路径【是文件列表】(目的路径);

我想实现的是:通过这个语句,形如:copy test\pro\123.bmp backup\less\123.bmp 这个语句的形式,来进行复制文件!

但是,我不想手动弄成N多个这样的类似“test\pro\123.bmp”这样的东西,我想让“a.txt”来充当“copy test\pro\123.bmp”这个意义,让“b.txt”充当“backup\less\123.bmp”这个意义,等于说,要复制的文件我要加载“a.txt”里的列表内容,目的路径我要加载“b.txt”。
        
如何实现?

按楼主的意思,a.txt中第n行应该是与b.txt中第n行是对应的,其实论坛有类似这样的贴子,代码如下:
1、变量赋值法(不适合超大文本):
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (a b) do (
  3.       set /a num+=1,n=0
  4.       for /f "delims=" %%b in (%%a.txt) do set /a n+=1&set "!num!-!n!=%%b"
  5. )
  6. for /l %%a in (1,1,%n%) do copy /y "!1-%%a!" "!2-%%a!"
复制代码
2、依次读取法(先读a.txt第一行,再读b.txt第二行,再返回读a.txt第二行。。。)
  1. @echo off
  2. set /a n=-1
  3. :begin
  4. set /a n+=1
  5. if %n% neq 0 set "sk=skip=%n%"
  6. for /f "%sk% delims=" %%a in (a.txt) do set "a=%%a"&goto next
  7. :next
  8. for /f "%sk% delims=" %%a in (b.txt) do if "%%a" neq "" copy /y "%a%" "%%a"&goto begin
复制代码

[ 本帖最后由 batman 于 2009-11-7 14:18 编辑 ]
***共同提高***

TOP

ok成功了,谢谢!!

TOP

返回列表