无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 10773|回复: 11
打印 上一主题 下一主题

求批量搜索并复制文件的批处理!

[复制链接]
跳转到指定楼层
1#
发表于 2008-11-21 15:23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想搜索特定文本文件中列出的所有文件,包括分区中的所有子目录
文本文件内容比如:
85541965.*
fjdyuhahj.*
dfjkfsidsi.*
456798.mpg

然后COPY到指定路径

这种批处理该如何写?

[ 本帖最后由 huantaoyan 于 2008-11-21 15:24 编辑 ]
2#
发表于 2008-11-21 16:26:02 | 只看该作者
  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 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2008-11-22 06:48:50 | 只看该作者
太感谢了,版主真是速度,现在已经能完成操作了,
请问"%%~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 编辑 ]
回复

使用道具 举报

4#
发表于 2008-11-22 12:42:38 | 只看该作者
%%~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 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2008-11-22 20:24:27 | 只看该作者
我从接触CMD批处理开始,见别人好多能用到 %%i  但是我在论坛也找过关于此参数的文章,始终不明白是什么意思,版主大师能再给讲解一下吗
回复

使用道具 举报

6#
发表于 2008-11-22 21:39:10 | 只看该作者
回复

使用道具 举报

7#
 楼主| 发表于 2008-11-23 00:12:39 | 只看该作者
好的,太感谢了,一定好好学习
回复

使用道具 举报

8#
 楼主| 发表于 2008-11-23 09:41:16 | 只看该作者
可以了,嘎嘎,以完美实现选择分区和选择文件的批量搜索,不过我用了2个批处理结合使用的方法
回复

使用道具 举报

9#
发表于 2008-12-16 21:57:15 | 只看该作者
这几天在学习,终于明白了,谢谢了。
回复

使用道具 举报

10#
发表于 2013-5-25 18:46:25 | 只看该作者
您好,拜读您的大作,有个问题请教一下:
@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:
谢谢
回复

使用道具 举报

11#
发表于 2013-5-25 21:01:48 | 只看该作者
xiner888 发表于 2013-5-25 18:46
您好,拜读您的大作,有个问题请教一下:
@echo off
for /f "tokens=*" %%a in (file) do (

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 04:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表