标题: [文件操作] 批处理如何在整个本地磁盘中查找、删除文件? [打印本页]
作者: 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就可以自动删除该目录及目录下的文件)? 我是新手,不知对不对,只当是给自己增加积分。
- @echo off
- 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 (
- for /f "delims=" %%i in ('dir /a-d /b /s %%a:') do (
- if exist %%~dpiabc.exe if exist %%~dpidef.exe (
- echo 找到目录"%%~dpi",按任意键运行def.exe,否则CTRL+C取消&pause
- %%~dpidef.exe
- goto :eof
- )))
- echo 所有磁盘目录下没发现abc.exe及def.exe&pause
复制代码
作者: apang 时间: 2011-12-21 00:41
本帖最后由 apang 于 2011-12-21 09:50 编辑
- @echo off&echo 请等待...
- 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 (
- for /f "delims=" %%i in ('dir /a-d /b /s %%a:\') do (
- if exist "%%~dpiabc.exe" if exist "%%~dpidef.exe" echo 找到目录"%%~dpi",按任意键运行def.exe,否则Ctrl+C取消&pause&"%%~dpidef.exe" &goto :eof
- ))
- 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 的精心回复。我昨晚用自己的办法解决了,只是语句不够精。献丑了!- @echo off
- set /p test=请输入OK,按回车:
- if %test%==OK (goto start) else (goto end1)
-
- :start
- for /f "tokens=3" %%i in ('echo list volume ^| diskpart ^| findstr "磁盘分区"') do (
- CD\
- %%i:
- for /f "delims=""" %%j in ('dir /b /s abc.exe') do (
- if exist %%j (
- CD %%~spj
- start/WAIT def.exe
- ECHO 请等候执行完卸载程序后,再按回车键继续,否则出错!!!!.
- PAUSE >nul
- cd..
- rd /s/q %%~dpsj
- ) else (
- echo 此盘没有!
- CD\)
- )
- )
-
- ECHO 顺利完成!按任一键退出.....
- pause>nul
-
- goto end2
-
-
- :end1
- ECHO 放弃操作!
- PAUSE >nul
-
- :end2
- EXIT
复制代码
作者: awk 时间: 2011-12-21 22:56
回复 7# szscwy
再过几天,可能连你自己都看不懂代码是怎么写的了,这样是不是显得清晰一些:- @echo off
- set /p test=请输入OK,按回车:
- if %test%==OK (goto start) else (goto end1)
-
- :start
- for /f "tokens=3" %%i in ('echo list volume ^| diskpart ^| findstr "磁盘分区"') do (
- CD\
- %%i:
- for /f "delims=""" %%j in ('dir /b /s abc.exe') do (
- if exist %%j (
- CD %%~spj
- start/WAIT def.exe
- ECHO 请等候执行完卸载程序后,再按回车键继续,否则出错!!!!.
- PAUSE >nul
- cd..
- rd /s/q %%~dpsj
- ) else (
- echo 此盘没有!
- CD\
- )
- )
- )
-
- ECHO 顺利完成!按任一键退出.....
- pause>nul
-
- goto end2
-
- :end1
- ECHO 放弃操作!
- PAUSE >nul
-
- :end2
- EXIT
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |