联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off ::如果有多个路径,或者排除多个文件夹::: ::或者排除多个文件,请手工进行设置::::: ::findstr 后面可以跟多个/c:""参数:::::: ::如:/c:"game" /c:"qq" /c:"net" :::::: ::中间使用空格间隔::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::: :: code by zzlike 2006-12-11 CMD@XP:::: ::******配置文件开始*****************:: ::::::::指定搜索路径::例 e:\ :::::::::: set "dd=e:\" ::::::::排除文件夹::::::::::::::::::::: set "dn=game" ::::::::排除文件::::::::::::::::::::::: set "fn=排除删除文件夹.bat" ::******配置文件结束*****************:: ::::::::删除文件夹::::::::::::::::::::: for /f "delims=" %%i in ('dir /b /ad "%dd%" ^|findstr /i /v /b /e /c:"%dn%"') do attrib -s -h -r -a /s /d "%%i" && rd /s /q "%%i" && echo 已删除目录"%%~fi" ::::::::删除文件::::::::::::::::::::::: for /f "delims=" %%i in ('dir /b /a-d "%dd%" ^|findstr /i /v /b /e /c:"%fn%"') do del /a /f /q "%%i" && echo 已删除文件"%%~fnxi"
@echo off && setlocal enabledelayedexpansion ::主要用于全盘远程对比更新::::::::::::: ::如果本地测试请自行修改::::::::::::::: ::本地对比更新已通过测试::::::::::::::: ::远程对比更新未测试::::::::::::::::::: ::此代码效率不高,只为演示::::::::::::: :: code by zzlike 2006-12-11 CMD@XP:::: ::::::::::::::::::::::::::::::::::::::: ::******配置文件开始*****************:: ::::::::源目录::::::::::::::::::::::::: set sd=\\192.168.0.14\d\ ::::::::目标盘::::::::::::::::::::::::: set dd=d:\ ::******配置文件结束*****************:: ::::::::映射网络路径::::::::::::::::::: net use x: %sd% ::::::::生成文件列表::::::::::::::::::: echo. > sd.txt echo. > dd.txt for /r "x:\" %%i in (*) do echo %%~pnxi >> sd.txt for /r "%dd%" %%i in (*) do echo %%~pnxi >> dd.txt ::::::::对比文件列表并删除多余文件::::: for /f "tokens=*" %%i in (dd.txt) do ( find "%%i" sd.txt || del /a /f /q "%dd%%%i" ) ::::::::删除空文件夹::::::::::::::::::: set num=0 for /f "delims=" %%i in ('dir /ad /b /s "%dd%"') do ( for /f %%j in ('dir /a "%%i"') do set /a num+=1 if !num! lss 8 attrib -s -h -r -a "%%i" && rd /s /q "%%i" set num=0 ) ::::::::更新文件::::::::::::::::::::::: xcopy /d /e /i /y /c /q /h /r /k "x:\*" "%dd%*" ::::::::清理临时文件并断开网络路径::::: net use x: /delete /y del /a /f /q sd.txt del /a /f /q dd.txt
@echo off&&for /f "delims=" %%i in ('dir /b/a-d ^|FINDSTR /i /v "\<不删除的文件\>"') do attrib -s -h -r -a "%%i" && del /q/f "%%i" pause
Originally posted by lxmxn at 2006-12-10 02:05: @echo off&&for /f "delims=" %%i in ('dir /b/a-d ^|FINDSTR /i /v "\<不删除的文件\>"') do attrib -s -h -r -a "%%i" && ...
@echo off&&for /f "delims=" %%i in ('dir /b/a-d ^|FINDSTR /i /v "\<不删除的文件\>"') do attrib -s -h -r -a "%%i" && ...
for /f "usebackq delims=" %%i in (`dir/b/ad e: ^|FINDSTR/i /V "\^<game\^>"^|FINDSTR/i /V "\^<QQ对战平台\^>"^|FINDSTR/i /V "\^<ghost\^>"`) do attrib -s -h -r -a /s /d "%%i" && rd /s /q "%%i" for /f "usebackq delims=" %%i in (`dir/b/a-d e: ^|FINDSTR/i /V "\^<排除删除文件夹.bat\^>"`) do attrib -s -h -r -a "%%i" && del /q "%%i" pause
Originally posted by namejm at 2006-12-10 03:05: 删除文件前不必先去文件属性,直接用 del /a /f 强制删除任意属性的文件就可以了。
for /f "usebackq delims=" %%i in (`dir/b/ad e: ^|FINDSTR/i /V "\^<game\^>"^|FINDSTR/i /V "\^<QQ对战平台\^>"^|FINDSTR/i /V "\^<ghost\^>"`) do attrib -s -h -r -a /s /d "%%i" && rd /s /q "%%i" for /f "usebackq delims=" %%i in (`dir/b/a-d e: ^|FINDSTR/i /V "\^<排除删除文件夹.bat\^>"`) do del /a /f /q "%%i" pause
请教下兄 ^一般什么时间才用啊? 另外你的脚本我测试了, 如果排除文件有空格不能完成删除
2006-12-09 19:08 <DIR> . 2006-12-09 19:08 <DIR> .. 2006-12-09 19:08 22 1 # 1.txt 2006-12-09 19:08 22 11 # 11.txt 2006-12-09 19:08 22 13 # 13.txt 2006-12-09 19:08 22 15 # 15.txt 2006-12-09 19:08 22 17 # 17.txt 2006-12-09 19:08 22 19 # 19.txt 2006-12-09 19:08 22 3 # 3.txt 2006-12-09 19:08 22 5 # 5.txt 2006-12-09 19:08 22 7 # 7.txt 2006-12-09 19:08 22 9 # 9.txt
@echo off for /f "delims=" %%i in ('dir /b/a-d ^|findstr /i /V "\<19.#.19.txt\> \<9.#.9.txt\>"') do del "%%i" pause