标题: [其他] [已解决]批处理怎样根据指定条件批量复制文件? [打印本页]
作者: zhoubin 时间: 2011-2-6 09:29 标题: [已解决]批处理怎样根据指定条件批量复制文件?
首先,祝老大新春快乐。。。。
有一个难题,想请教老大,问题描述如下:
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 编辑 ]
作者: wc726842270 时间: 2011-2-6 09:58
没有试验过,另外本人很少用COPY.不对的地方请荐谅- @echo off
- rem 默认1.TXT中的内容为列
- for /f "usebackq delims=" %%i in ("D:\新建文件夹 (2)\1.txt") do (set "%%i"=#
- for %%i in ("D:\新建文件夹 (2)\mp3\*.mp3") do (if defined "%%i" (copy "%%i" "D:\新建文件夹 (2)\mp3 01") else copy "%%i" "D:\新建文件夹 (2)\mp3 02"
- )
- )
- pause
复制代码
[ 本帖最后由 wc726842270 于 2011-2-6 10:46 编辑 ]
作者: zhoubin 时间: 2011-2-6 10:37 标题: 回复 2楼 的帖子
不好意思,没有成功。。。
-
- @echo off
- 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"
复制代码
我写了一段代码,总是不成功,请帮忙看一下那里写的不对。。。
谢谢
作者: wc726842270 时间: 2011-2-6 10:54
有几点不明白
1.%%a是什么先区分清楚
2.delims=*是什么意思\
3.没有进行分组(也就是少了不少"()")
4.copy /y "%%a" 感觉不少东西么?
[ 本帖最后由 wc726842270 于 2011-2-6 10:58 编辑 ]
作者: zhoubin 时间: 2011-2-6 11:01
呵呵,见笑了,我是菜鸟,什么都不懂的,这个批处理是我胡乱写的,还有很多知识需要我去学习。。。
这个批处理是我参考网上的一些写法写的,具体是什么意思,其实我也不知道,让您见笑了,嘿嘿,不好意思,我惭愧!!!
作者: wc726842270 时间: 2011-2-6 11:16
都一样.呵呵- for /f "usebackq" %%i in ("D:\新建文件夹 (2)\1.txt") do (if exist D:\新建文件夹 (2)\mp3\%%i (copy "D:\新建文件夹 (2)\mp3\%%i" "指定目录"))
- for %%a in ("D:\新建文件夹 (2)\mp3\*.mp3") do ((find %%~ia.mp3 "D:\新建文件夹 (2)\1.txt")||copy "%%a" "指定目录")
复制代码
[ 本帖最后由 wc726842270 于 2011-2-6 11:21 编辑 ]
作者: 随风 时间: 2011-2-6 12:01
请楼主尽快修改标题,否则会被锁帖、删除。
标题规则请参阅 http://www.bathome.net/thread-963-1-1.html
作者: zhoubin 时间: 2011-2-6 12:28 标题: 回复 7楼 的帖子
版主,问题还没有解决,标题我修改了,不知这样修改妥否?
谢谢版主的提醒!!!
作者: broly 时间: 2011-2-6 15:50
-
- @echo off
- setlocal enabledelayedexpansion
- set "folder=D:\新建文件夹 (2)"
- for /f "delims=" %%i in ('dir /b "%folder%\mp3\*.mp3"') do (
- set t=
- for /f "delims=" %%j in ('findstr /i "%%i" "%folder%\1.txt" 2^>nul') do (
- set t=flag
- )
- if defined t (
- copy "%folder%\mp3\%%i" "%folder%\mp3 01\" /y
- ) else (
- copy "%folder%\mp3\%%i" "%folder%\mp3 02\" /y
- >>"%folder%\2.txt" echo %%i
- )
- )
- pause
复制代码
作者: broly 时间: 2011-2-6 18:18
这个效率比较高
- @echo off
- set "folder=D:\新建文件夹 (2)"
- for /f "delims=" %%i in ('type "%folder%\1.txt"') do (
- if exist "%folder%\mp3\%%i" (
- copy "%folder%\mp3\%%i" "%folder%\mp3 01\" /y
- set %%i=flag
- )
- )
- for /f "delims=" %%i in ('dir /b "%folder%\mp3\*.mp3"') do (
- if not defined %%i (
- copy "%folder%\mp3\%%i" "%folder%\mp3 02\" /y
- >>"%folder%\2.txt" echo %%i
- )
- )
- pause
复制代码
作者: zhoubin 时间: 2011-2-6 19:22 标题: 回复 10楼 的帖子
谢谢您。。。。
9楼和10楼的代码,都可以。。。。
让您费心了。。。。
谢谢!!!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |