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

[文件操作] [已解决]批处理怎样根据用户输入搜索指定类型文件?

本帖最后由 ny350101 于 2011-4-4 18:24 编辑
  1. @echo off
  2. echo 请输入你要查找的程序名称,如 a.txt 或 *.txt 或 a*
  3. echo 带空格的文件名,请加上"半角引号"。
  4. echo\
  5. set cx=
  6. set d=
  7. set /p cx=请输入:
  8. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  9. fsutil fsinfo drivetype %%a: | find "移动">nul && (set d=%%a)
  10. )
  11. if exist %d%: (
  12. if not exist d:\wkdxz\ md d:\wkdxz
  13. for /f "delims=" %%b in ('dir /s /b %d%:\%cx%') do (copy "%%b" d:\wkdxz 2>nul)
  14. ) else (
  15. echo 当前没有检测到U盘,按任意键退出……
  16. pause>nul
  17. exit
  18. )
  19. echo 复制完毕,按任意键打开复制目标目录……
  20. pause>nul
  21. explorer d:\wkdxz
复制代码
这是一个查找U盘指定文件的批处理,现在的问题是把他修改为默认(按回车键)查找*.DOC文件(也就是所有的DOC文件),想查找别的类型文件是按照批处理的提示输入文件类型?
1

评分人数

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

set/p后添加
  1. if "%cx%"=="" (set "cx=*.doc")
复制代码
若是不指定后缀名则添加默认后缀名为.doc话可以这样
  1. for /f "delims=" %%a in ("%cx%") do (
  2. if "%%~xa"=="" (set cx=%cx%.DOC)
  3. )
复制代码
1

评分人数

TOP

在@echo off的下一行添加set cx=*.doc

TOP

2# TX_kakashi


谢谢,你的第一段代码即
  1. if "%cx%"=="" (set "cx=*.doc")
复制代码
符合我的要求。
第二段代码如果直接按回车的话,则将全部的文件都给复制了,且打乱了目录结构。不过后缀名倒是可以省略了。各有长处。不知我添加的位置是否正确
再次谢谢。

TOP

他是想为后缀名为空的变量加上doc后缀,不过这样更简单:
if defined cx if "%cx:.=%"=="%cx%" set cx=%cx%.doc

TOP

5# zm900612


谢谢了老兄。能否告诉我该代码应该添加在哪里?

TOP

本帖最后由 hanyeguxing 于 2011-4-4 17:36 编辑

5# zm900612
1:
  1. if not defined cx set cx=.doc
复制代码
2:
  1. (set cx||set cx=.doc)>nul 2>nul
复制代码
ps:放到     set /p cx=请输入:     的下面
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

这么多热心人啊,我都谢不及了。在此一起表示感谢

TOP

返回列表