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

[文件操作] 求助:批处理搜索指定目录的指定后缀名的文件

求助:批处理搜索指定目录的指定后缀名的文件并且记录下被复制文件的路径

例如:

搜索指定文件夹“A”的后缀名为“jpg”的所有文件并将其复制到指定文件夹“B”里面,

并且将被复制的后缀名为“jpg”文件原来的路径输出到记事本里面。

注:文件夹“A”里还包含有子文件夹!!!

求各位高手出招了!先谢谢啦!!!

  1. @echo off
  2. :: 考虑到完整路径可能含有特殊字符,输出的jpg文件路径首尾用引号括起来了
  3. cd.>d:\list.txt
  4. for /f "delims=" %%i in ('dir /a-d /b /s "A\*.jpg" 2^>nul') do (
  5.     copy "%%i" "B">nul&&echo "%%i">>d:\list.txt
  6. )
  7. start d:\list.txt
  8. pause
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

JM好高明啊,考虑问题如此全面。只看echo "%%i"而不看代码解释,愣是觉得""是多余的。赞!
心绪平和,眼藏静谧。

TOP

  犯了一个低级错误,误把 dir /a-d /b /s "A\*.jpg" 写成了 dir /a-d /b /s *.jpg "A",已经修正。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 4楼 的帖子

测试dir /a-d /b /s "A\*.jpg"完全等同于dir /a-d /b /s *.jpg "A",不算错误。
心绪平和,眼藏静谧。

TOP

回复 5楼 的帖子

NO,可能在这里刚好碰巧相同。
dir /a-d /b /s "A\*.jpg" 是列举当前目录下A文件夹及其所有子目录下的所有jpg文件
dir /a-d /b /s *.jpg "A" 是同时列举当前目录及所有子目录下的所有jpg文件A文件夹及其所有子目录下的所有文件
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 6楼 的帖子

谢谢指教,是我肤浅了。
心绪平和,眼藏静谧。

TOP

原帖由 namejm 于 2008-10-15 12:22 发表
@echo off
:: 考虑到完整路径可能含有特殊字符,输出的jpg文件路径首尾用引号括起来了
cd.>d:\list.txt
for /f "delims=" %%i in ('dir /a-d /b /s "A\*.jpg" 2^>nul') do (
    copy "%%i" "B">nul&&echo "%%i" ...


能帮忙解释2^>nul含义?

TOP

  若 dir 的结果有出错信息,将屏蔽掉,以免在do之后把这些出错信息作为文件路径加以处理——如果不存在jpg文件,dir 命令将会报错。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

原帖由 namejm 于 2008-10-16 12:14 发表
  若 dir 的结果有出错信息,将屏蔽掉,以免在do之后把这些出错信息作为文件路径加以处理——如果不存在jpg文件,dir 命令将会报错。


不需要加转义字符 ^,只需2>nul就行了吧。

TOP

回复 10楼 的帖子

你听谁说不需要转义?还是你亲自测试过?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表