Board logo

标题: [文件操作] [已解决]批处理怎样读取文件列表,将指定文件拷贝到文件夹里? [打印本页]

作者: ifer    时间: 2010-5-11 17:42     标题: [已解决]批处理怎样读取文件列表,将指定文件拷贝到文件夹里?

有一个文件列表,可以加入到批处理中,可以让批处理读取txt文件,然后把这个列表里指定的文件拷贝到C:\fenxi文件夹里,先创建fenxi文件夹。


如果遇到文件不存在,则跳过。

就这么个功能,小妹不知道怎么写了   谢谢大家!

[ 本帖最后由 ifer 于 2010-5-14 14:53 编辑 ]
作者: namejm    时间: 2010-5-11 19:49

  请给出文件列表的具体内容,而不是泛泛而谈有这么一个文件列表,并明确指出哪些文件是需要复制的,数据格式决定了代码的编写。
作者: jcy0307    时间: 2010-5-11 23:02

  1. @echo off
  2. echo 按任意键开始复制
  3. pause>nul
  4. for /f "delims=" %%i in (文件列表.txt) do if exist %%i copy %%i C:\fenxi
  5. pause
复制代码

作者: sgaizxt001    时间: 2010-5-11 23:22

楼上代码用%%~fi会不会比较好一点?
作者: hanyeguxing    时间: 2010-5-11 23:33

  1. @echo off
  2. if not exist "C:\fenxi\" md "C:\fenxi\"
  3. for /f "usebackq delims=" %%a in ("列 表.txt") do if exist "%%~fa" copy "%%~fa" "C:\fenxi\"
复制代码
要求“列 表.txt”:
1,每行一个文件完整路径
2,文本必须是ANSI编码

[ 本帖最后由 hanyeguxing 于 2010-5-12 12:49 编辑 ]
作者: ifer    时间: 2010-5-12 10:12

我的TXT文档里就是以下内容,截取部分:

C:\WINDOWS\SYSTEM32\MSI.DLL
C:\WINDOWS\SYSTEM32\MSSVP.DLL
C:\WINDOWS\SYSTEM32\XPSRCHVW.EXE
C:\WINDOWS\SYSTEM32\WMPLOC.DLL

谢谢楼上几位,我先试试各位的方法。
作者: hanyeguxing    时间: 2010-5-12 12:15

原帖由 ifer 于 2010-5-12 10:12 发表
我的TXT文档里就是以下内容,截取部分:
C:\WINDOWS\SYSTEM32\MSI.DLL
C:\WINDOWS\SYSTEM32\MSSVP.DLL
C:\WINDOWS\SYSTEM32\XPSRCHVW.EXE
C:\WINDOWS\SYSTEM32\WMPLOC.DLL
谢谢楼上几位,我先试试各位的 ...

如果列表中都是C:\WINDOWS\SYSTEM32\*的文件,可以直接写成:
MSI.DLL
MSSVP.DLL
XPSRCHVW.EXE
WMPLOC.DLL
批处理:
  1. @echo off
  2. set "h=C:\fenxi\"&set "y=%windir%\system32\%%a"
  3. if not exist "%h%" md "%h%"
  4. for /f "usebackq delims=" %%a in ("列 表.txt") do if exist "%y%" copy "%y%" "%h%"
复制代码
也可以把列表内容直接放到批处理:
  1. @echo off
  2. set "h=C:\fenxi\"
  3. if not exist "%h%" md "%h%"
  4. for /f "delims=" %%a in ('more +5^<"%~fs0"') do if exist "%%~fa" copy "%%~fa" "%h%"
  5. exit
  6. ;下面为要复制的文件列表
  7. C:\WINDOWS\SYSTEM32\MSI.DLL
  8. C:\WINDOWS\SYSTEM32\MSSVP.DLL
  9. C:\WINDOWS\SYSTEM32\XPSRCHVW.EXE
  10. C:\WINDOWS\SYSTEM32\WMPLOC.DLL
复制代码
或:
  1. @echo off
  2. set "h=C:\fenxi\"&set "y=%windir%\system32\%%a"
  3. if not exist "%h%" md "%h%"
  4. for /f "delims=" %%a in ('more +5^<"%~fs0"') do if exist "%y%" copy "%y%" "%h%"
  5. exit
  6. ;下面为要复制的文件列表
  7. ;每一行的最前面和最后面不能有空格
  8. MSI.DLL
  9. MSSVP.DLL
  10. XPSRCHVW.EXE
  11. WMPLOC.DLL
复制代码
如果文件名中没有空格逗号分号等,可以:
  1. @echo off
  2. set "h=C:\fenxi\"&set "y=%windir%\system32\%%a"
  3. if not exist "%h%" md "%h%"
  4. set "n=MSI.DLL MSSVP.DLL XPSRCHVW.EXE WMPLOC.DLL"
  5. for %%a in (%n%) do if exist "%y%" copy "%y%" "%h%"
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-12 12:53 编辑 ]
作者: ifer    时间: 2010-5-14 14:52

非常感谢各位哥哥的指导,特别是楼上提供的多种方案,昨天已经解决问题!
作者: lianjl    时间: 2010-5-16 17:05

不错,进来学习了.




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2