Board logo

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

作者: szscwy    时间: 2011-12-19 16:06     标题: 批处理如何在整个本地磁盘中查找、删除文件?

目的是:在整个本地磁盘中查找 abc.exe,找到后,运行该目录下的def.exe,然后删除这个安装目录及其所有子目录和文件。因文件abc.exe安装的目录不确定,而经常要执行相同的操作。请问能用批处理实现吗?谢谢先
作者: qq2501    时间: 2011-12-19 18:16

可以确定abc.exe相对安装目录是根目录吗?
作者: applba    时间: 2011-12-19 20:39

话说我愣是没有看懂。
楼主标题违规,貌似内容也违规。
作者: szscwy    时间: 2011-12-20 08:01

可以确定abc.exe相对安装目录是根目录吗?
qq2501 发表于 2011-12-19 18:16



    谢谢老师的回复!abc.exe文件通常不在根目录,可能在任一本地磁盘,任意文件夹。目的是根据这个文件,找到这个安装目录,再执行另外一个文件和删除此文件的安装目录。
作者: apang    时间: 2011-12-20 13:13

本帖最后由 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
复制代码

作者: apang    时间: 2011-12-21 00:41

本帖最后由 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:\'  才行。)
作者: szscwy    时间: 2011-12-21 12:24

本帖最后由 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
复制代码

作者: awk    时间: 2011-12-21 22:56

回复 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2