找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26998|回复: 7

[文件操作] 批处理如何在整个本地磁盘中查找、删除文件?

[复制链接]
发表于 2011-12-19 16:06:25 | 显示全部楼层 |阅读模式
目的是:在整个本地磁盘中查找 abc.exe,找到后,运行该目录下的def.exe,然后删除这个安装目录及其所有子目录和文件。因文件abc.exe安装的目录不确定,而经常要执行相同的操作。请问能用批处理实现吗?谢谢先
发表于 2011-12-19 18:16:33 | 显示全部楼层
可以确定abc.exe相对安装目录是根目录吗?
发表于 2011-12-19 20:39:56 | 显示全部楼层
话说我愣是没有看懂。
楼主标题违规,貌似内容也违规。

评分

参与人数 1PB +5 收起 理由
CrLf + 5 感谢主动维护论坛秩序!

查看全部评分

 楼主| 发表于 2011-12-20 08:01:56 | 显示全部楼层
可以确定abc.exe相对安装目录是根目录吗?
qq2501 发表于 2011-12-19 18:16



    谢谢老师的回复!abc.exe文件通常不在根目录,可能在任一本地磁盘,任意文件夹。目的是根据这个文件,找到这个安装目录,再执行另外一个文件和删除此文件的安装目录。
发表于 2011-12-20 13:13:01 | 显示全部楼层
本帖最后由 CrLf 于 2011-12-21 16:43 编辑

瞎猜楼主是想定位到abc.exe与def.exe同时存在的那个目录,且def.exe是卸载程序(运行def.exe就可以自动删除该目录及目录下的文件)? 我是新手,不知对不对,只当是给自己增加积分。
  1. @echo off
  2. 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 (
  3. for /f "delims=" %%i in ('dir /a-d /b /s %%a:') do (
  4. if exist %%~dpiabc.exe if exist %%~dpidef.exe (
  5. echo 找到目录"%%~dpi",按任意键运行def.exe,否则CTRL+C取消&pause
  6. %%~dpidef.exe
  7. goto :eof
  8. )))
  9. echo 所有磁盘目录下没发现abc.exe及def.exe&pause
复制代码

评分

参与人数 1技术 +1 收起 理由
szscwy + 1 分析中肯,但还是没有成功。注:def.exe并不 ...

查看全部评分

发表于 2011-12-21 00:41:08 | 显示全部楼层
本帖最后由 apang 于 2011-12-21 09:50 编辑
  1. @echo off&echo 请等待...
  2. 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 (
  3. for /f "delims=" %%i in ('dir /a-d /b /s %%a:\') do (
  4. if exist "%%~dpiabc.exe" if exist "%%~dpidef.exe" echo 找到目录"%%~dpi",按任意键运行def.exe,否则Ctrl+C取消&pause&"%%~dpidef.exe" &goto :eof
  5. ))
  6. echo 所有磁盘均没发现匹配的目录&pause
复制代码
若要自动删除目录及其子目录,建议楼主找一个DELTREE.EXE,然后修改相应代码.

(晕死,'dir /a-d /b /s %%a:'在Win7下正常,WinXP下非得改成  'dir /a-d /b /s %%a:\'  才行。)
 楼主| 发表于 2011-12-21 12:24:19 | 显示全部楼层
本帖最后由 CrLf 于 2011-12-21 16:43 编辑

谢谢apang 的精心回复。我昨晚用自己的办法解决了,只是语句不够精。献丑了!
  1. @echo off
  2. set /p test=请输入OK,按回车:
  3. if %test%==OK (goto start) else (goto end1)

  4. :start
  5. for /f "tokens=3" %%i in ('echo list volume ^| diskpart ^| findstr "磁盘分区"') do (
  6. CD\
  7. %%i:
  8. for /f "delims=""" %%j in ('dir /b /s abc.exe') do (
  9. if exist %%j (
  10.   CD %%~spj
  11.   start/WAIT def.exe
  12.   ECHO 请等候执行完卸载程序后,再按回车键继续,否则出错!!!!.
  13.   PAUSE >nul
  14.   cd..
  15.   rd /s/q %%~dpsj
  16. ) else (
  17.   echo 此盘没有!
  18.   CD\)
  19. )
  20. )

  21. ECHO 顺利完成!按任一键退出.....
  22. pause>nul

  23. goto end2


  24. :end1
  25. ECHO 放弃操作!
  26. PAUSE >nul

  27. :end2
  28. EXIT
复制代码
发表于 2011-12-21 22:56:41 | 显示全部楼层
回复 7# szscwy


再过几天,可能连你自己都看不懂代码是怎么写的了,这样是不是显得清晰一些:
  1. @echo off
  2. set /p test=请输入OK,按回车:
  3. if %test%==OK (goto start) else (goto end1)

  4. :start
  5. for /f "tokens=3" %%i in ('echo list volume ^| diskpart ^| findstr "磁盘分区"') do (
  6.     CD\
  7.     %%i:
  8.     for /f "delims=""" %%j in ('dir /b /s abc.exe') do (
  9.         if exist %%j (
  10.             CD %%~spj
  11.             start/WAIT def.exe
  12.             ECHO 请等候执行完卸载程序后,再按回车键继续,否则出错!!!!.
  13.             PAUSE >nul
  14.             cd..
  15.             rd /s/q %%~dpsj
  16.         ) else (
  17.             echo 此盘没有!
  18.             CD\
  19.         )
  20.     )
  21. )

  22. ECHO 顺利完成!按任一键退出.....
  23. pause>nul

  24. goto end2

  25. :end1
  26. ECHO 放弃操作!
  27. PAUSE >nul

  28. :end2
  29. EXIT
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:32 , Processed in 0.020557 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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