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

[其他] [已解决]批处理怎样根据指定条件批量复制文件?

首先,祝老大新春快乐。。。。
有一个难题,想请教老大,问题描述如下:

D:\新建文件夹 (2)\下有文件1.txt,D:\新建文件夹 (2)\1.txt的内容是a.mp3 b.mp3 c.mp3 d.mp3
D:\新建文件夹 (2)\mp3\文件夹里有a.mp3  b.mp3  c.mp3  d.mp3  e.mp3
就是说文件D:\新建文件夹 (2)\1.txt里面是文件名,想在D:\新建文件夹 (2)\mp3\里按D:\新建文件夹 (2)\1.txt的内容搜索文件,如果找到了就复制文件到D:\新建文件夹 (2)\mp3 01\文件夹下面,把没有找到的文件复制到D:\新建文件夹 (2)\mp3 02\文件夹下,而且把没有找到的文件名输出到D:\新建文件夹 (2)\2.txt中。。。。

请教老大,以上的描述,批处理怎么写。。。。

本人很菜,想了几天,没想出来,所以来麻烦老大。。。
谢谢!!!

[ 本帖最后由 zhoubin 于 2011-2-6 19:23 编辑 ]
1

评分人数

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

没有试验过,另外本人很少用COPY.不对的地方请荐谅
  1. @echo off
  2. rem 默认1.TXT中的内容为列
  3. for /f "usebackq delims=" %%i in ("D:\新建文件夹 (2)\1.txt") do (set "%%i"=#
  4.   for %%i in ("D:\新建文件夹 (2)\mp3\*.mp3") do (if defined "%%i" (copy "%%i" "D:\新建文件夹 (2)\mp3 01") else   copy "%%i" "D:\新建文件夹 (2)\mp3 02"
  5. )
  6. )
  7. pause
复制代码

[ 本帖最后由 wc726842270 于 2011-2-6 10:46 编辑 ]

TOP

回复 2楼 的帖子

不好意思,没有成功。。。
  1. @echo off
  2. for /f  "usebackq"  %%i  in ("D:\新建文件夹 (2)\1.txt")  do for /f "delims=*" %%a in (' dir/a-d/b/s "D:\新建文件夹 (2)\%%i" ')  do if not exist "D:\新建文件夹 (2)\mp3 01\%%~nxi"  copy /y "%%a"
复制代码

我写了一段代码,总是不成功,请帮忙看一下那里写的不对。。。
谢谢

TOP

有几点不明白
1.%%a是什么先区分清楚
2.delims=*是什么意思\
3.没有进行分组(也就是少了不少"()")
4.copy /y "%%a" 感觉不少东西么?

[ 本帖最后由 wc726842270 于 2011-2-6 10:58 编辑 ]

TOP

呵呵,见笑了,我是菜鸟,什么都不懂的,这个批处理是我胡乱写的,还有很多知识需要我去学习。。。
这个批处理是我参考网上的一些写法写的,具体是什么意思,其实我也不知道,让您见笑了,嘿嘿,不好意思,我惭愧!!!

TOP

都一样.呵呵
  1. for /f "usebackq" %%i in ("D:\新建文件夹 (2)\1.txt") do (if exist D:\新建文件夹 (2)\mp3\%%i (copy "D:\新建文件夹 (2)\mp3\%%i" "指定目录"))
  2. for %%a in ("D:\新建文件夹 (2)\mp3\*.mp3") do ((find %%~ia.mp3  "D:\新建文件夹 (2)\1.txt")||copy "%%a" "指定目录")
复制代码

[ 本帖最后由 wc726842270 于 2011-2-6 11:21 编辑 ]

TOP

请楼主尽快修改标题,否则会被锁帖、删除。
标题规则请参阅 http://www.bathome.net/thread-963-1-1.html
技术问题请到论坛发帖求助!

TOP

回复 7楼 的帖子

版主,问题还没有解决,标题我修改了,不知这样修改妥否?
谢谢版主的提醒!!!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "folder=D:\新建文件夹 (2)"
  4. for /f "delims=" %%i in ('dir /b "%folder%\mp3\*.mp3"') do (
  5.   set t=
  6.   for /f "delims=" %%j in ('findstr /i "%%i" "%folder%\1.txt" 2^>nul') do (
  7. set t=flag
  8.   )
  9.   if defined t (
  10.        copy "%folder%\mp3\%%i" "%folder%\mp3 01\" /y
  11.   ) else (
  12.     copy "%folder%\mp3\%%i" "%folder%\mp3 02\" /y
  13.     >>"%folder%\2.txt" echo %%i
  14.   )
  15. )
  16. pause
复制代码
---学无止境---

TOP

这个效率比较高
  1. @echo off
  2. set "folder=D:\新建文件夹 (2)"
  3. for /f "delims=" %%i in ('type "%folder%\1.txt"') do (
  4.   if exist "%folder%\mp3\%%i" (
  5.     copy "%folder%\mp3\%%i" "%folder%\mp3 01\" /y
  6. set %%i=flag
  7.   )
  8. )
  9. for /f "delims=" %%i in ('dir /b "%folder%\mp3\*.mp3"') do (
  10.   if not defined %%i (
  11.     copy "%folder%\mp3\%%i" "%folder%\mp3 02\" /y
  12.     >>"%folder%\2.txt" echo %%i
  13.   )
  14. )
  15. pause
复制代码
1

评分人数

TOP

回复 10楼 的帖子

谢谢您。。。。
9楼和10楼的代码,都可以。。。。
让您费心了。。。。
谢谢!!!

TOP

返回列表