无忧启动论坛

标题: 求批量搜索并复制文件的批处理! [打印本页]

作者: huantaoyan    时间: 2008-11-21 15:23
标题: 求批量搜索并复制文件的批处理!
我想搜索特定文本文件中列出的所有文件,包括分区中的所有子目录
文本文件内容比如:
85541965.*
fjdyuhahj.*
dfjkfsidsi.*
456798.mpg

然后COPY到指定路径

这种批处理该如何写?

[ 本帖最后由 huantaoyan 于 2008-11-21 15:24 编辑 ]
作者: haiou327    时间: 2008-11-21 16:26
  1. 85541965.*
  2. fjdyuhahj.*
  3. dfjkfsidsi.*
  4. 456798.mpg
复制代码
以上保存为file

@echo off
for /f "tokens=*" %%a in (file) do (
for /f "tokens=*" %%i in ('dir /s/b/a-d %%a') do (
copy "%%~dpnxi" d:
)
)

d:为你想COPY到指定路径...  自行修改....

[ 本帖最后由 haiou327 于 2008-11-21 17:04 编辑 ]
作者: huantaoyan    时间: 2008-11-22 06:48
太感谢了,版主真是速度,现在已经能完成操作了,
请问"%%~dpnxi"是什么意思?
我想再得寸进尺的问一下,我现在把批处理改成

ECHO  在复制文件前请确保“保存文件名的文件”file和本程序在同一目录
set /p lj=  请输入要拷贝到的路径:
for /f "tokens=*" %%a in (song) do (
for /f "tokens=*" %%i in ('dir /s/b/a-d %%a') do (
copy "%%~dpnxi" %lj%
)
)


能不能把它改成可以选择 搜索路径,可以选择 保存文件名的文件的完整路径呢?
我加了set /p song=
但是不能指定 保存文件名的文件的完整路径 运行失败

[ 本帖最后由 huantaoyan 于 2008-11-22 08:01 编辑 ]
作者: haiou327    时间: 2008-11-22 12:42
%%~dpnxi的意思是将%%i扩充到完整的路径文件名和扩展名,%%i仅为文件名不包括路径的扩展名的.详见:
  1. ~I         - 删除任何引号("),扩充 %I
  2. %~fI        - 将 %I 扩充到一个完全合格的路径名
  3. %~dI        - 仅将 %I 扩充到一个驱动器号
  4. %~pI        - 仅将 %I 扩充到一个路径
  5. %~nI        - 仅将 %I 扩充到一个文件名
  6. %~xI        - 仅将 %I 扩充到一个文件扩展名
  7. %~sI        - 扩充的路径只含有短名
  8. %~aI        - 将 %I 扩充到文件的文件属性
  9. %~tI        - 将 %I 扩充到文件的日期/时间
复制代码
但是不能指定 保存文件名的文件的完整路径 运行失败
你的其中路径和文件名可能包含有空格,应该把完整路径用""引起来....."%lj%"

结合choice命令,可以实现选择 搜索路径.......

[ 本帖最后由 haiou327 于 2008-11-22 15:37 编辑 ]
作者: huantaoyan    时间: 2008-11-22 20:24
我从接触CMD批处理开始,见别人好多能用到 %%i  但是我在论坛也找过关于此参数的文章,始终不明白是什么意思,版主大师能再给讲解一下吗
作者: haiou327    时间: 2008-11-22 21:39
见本帖

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=128552&extra=page%3D1

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=128769&extra=page%3D1
作者: huantaoyan    时间: 2008-11-23 00:12
好的,太感谢了,一定好好学习
作者: huantaoyan    时间: 2008-11-23 09:41
可以了,嘎嘎,以完美实现选择分区和选择文件的批量搜索,不过我用了2个批处理结合使用的方法
作者: czswuyou    时间: 2008-12-16 21:57
这几天在学习,终于明白了,谢谢了。
作者: xiner888    时间: 2013-5-25 18:46
您好,拜读您的大作,有个问题请教一下:
@echo off
for /f "tokens=*" %%a in (file) do (
for /f "tokens=*" %%i in ('dir /s/b/a-d %%a') do (
copy "%%~dpnxi" d:
)
)
拷贝文件d:没有空间,怎么接着拷贝到e:和f:
谢谢
作者: icevan    时间: 2013-5-25 21:01
xiner888 发表于 2013-5-25 18:46
您好,拜读您的大作,有个问题请教一下:
@echo off
for /f "tokens=*" %%a in (file) do (

我想那你该先检查有多少盘符,并且盘符可写,空间足够。
然后在执行后面的拷贝命令。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3