标题: [注册表类] 【已解决】批处理每次都需要指定目录怎么办? [打印本页]
作者: buyixuelang 时间: 2015-3-17 00:00 标题: 【已解决】批处理每次都需要指定目录怎么办?
本帖最后由 buyixuelang 于 2015-3-18 11:57 编辑
- for /f "delims=" %%i in ('dir /b/s "D:\Program Files\Tencent\QQ2015\Users\173797719\Image\*.*"') do del /s/q "%%i
复制代码
补充:希望大神帮我修改一下。希望能够显示下删除文件数,和删除的总容量,那些空文件夹也一并清除吧,谢谢了,补充晚了,谢谢大家!!
作者: Batcher 时间: 2015-3-17 09:00
- @echo off
- set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- if exist "%FolderQQ%\%%i\Image\" (
- del /f /q "%FolderQQ%\%%i\Image\*.*"
- )
- )
复制代码
作者: qw8334936 时间: 2015-3-17 09:57
回复 2# Batcher
findstr "[0-9]*$
这个命令是什么意思
为什么只有0-9却能找出 QQ号呢
作者: Batcher 时间: 2015-3-17 10:18
回复 3# qw8334936
参考:
http://bbs.bathome.net/thread-24-1-1.html
作者: pcl_test 时间: 2015-3-17 12:57
回复 1# buyixuelang
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: Batcher 时间: 2015-3-17 13:37
- @echo off
- set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- set n=0
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- if exist "%FolderQQ%\%%i\Image\" (
- del /f /q "%FolderQQ%\%%i\Image\*.*"
- set /a n+=1
- )
- )
- echo 清理了 %n% 个文件夹
- pause
复制代码
作者: buyixuelang 时间: 2015-3-17 17:53
回复 2# Batcher
谢谢伟大的管理员了,再次麻烦您帮我修改一下吧,希望能够显示删除文件数的情况下,还能够显示删除文件的总容量,另外删除之后剩下的空文件夹也一并删除了吧。大神,谢谢!
作者: Batcher 时间: 2015-3-17 18:18
回复 7# buyixuelang - @echo off
- set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- set n=0
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- if exist "%FolderQQ%\%%i\Image\" (
- del /f /q "%FolderQQ%\%%i\Image\*.*"
- set /a n+=1
- REM 你先试试这样删除空文件夹是否可行
- rd /q "%FolderQQ%\%%i\Image"
- rd /q "%FolderQQ%\%%i"
- )
- )
- echo 清理了 %n% 个文件夹
- pause
复制代码
作者: buyixuelang 时间: 2015-3-17 19:27
回复 8# Batcher
大神管理员,谢谢您的帮助!测试了一下发现不能删除空文件夹。
作者: Batcher 时间: 2015-3-17 19:38
回复 9# buyixuelang
请告诉我哪个是空文件夹
作者: buyixuelang 时间: 2015-3-17 19:48
回复 10# Batcher
Imagel
作者: Batcher 时间: 2015-3-17 20:59
回复 11# buyixuelang
第11行代码删掉
把空文件夹的路径交给第10行的rd命令
作者: pcl_test 时间: 2015-3-17 22:37
本帖最后由 pcl_test 于 2015-3-17 22:39 编辑
回复 1# buyixuelang
借Batcher的代码小改下- @echo off
- set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- set n=0 & set s=0 & set m=0
- if exist "%FolderQQ%\%%i\Image\" pushd "%FolderQQ%\%%i\Image\"
- for /f "delims=" %%a in ('dir /a-d /b 2^>nul') do (
- del /f /q "%%a" && set /a n+=1 && set /a s+=%%~za
- )
- for /f "delims=" %%b in ('dir /ad /b 2^>nul') do (
- rem dir /a /b "%%b"|findstr .* >nul || (rd "%%b" /q 2>nul && set /a m+=1)
- if %%~zb == 0 (rd "%%b" /q 2>nul && set /a m+=1)
- )
- echo %%i
- setlocal enabledelayedexpansion
- echo 清理了!n!个文件,共计!s!字节
- echo 清理了!m!个空文件夹
- echo.
- endlocal
- popd
- )
- pause
复制代码
作者: buyixuelang 时间: 2015-3-17 22:57
回复 13# pcl_test
能不能把字节改成MB,文件夹里还剩一个空文件夹。谢谢谢谢了。
作者: buyixuelang 时间: 2015-3-17 22:58
回复 12# Batcher
谢谢谢谢您了!
作者: pcl_test 时间: 2015-3-17 23:12
回复 14# buyixuelang
修改相应地方的代码- setlocal enabledelayedexpansion
- set /a s=!s!/1048576
- rem set /a s=!s!/1024,则是KB
- echo 清理了!n!个文件,共计!s!MB
- echo 清理了!m!个空文件夹
- echo.
- endlocal
复制代码
至于没有删掉Group,是因为里面还有其他文件夹,代码所谓的空文件是指里面既没有文件也没有文件夹,所以Group对代码而言就不算空文件夹
作者: buyixuelang 时间: 2015-3-17 23:26
回复 12# Batcher
@echo off
set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
cd /d "%FolderQQ%"
for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
set n=0 & set s=0 & set m=0
if exist "%FolderQQ%\%%i\Image\" pushd "%FolderQQ%\%%i\Image\"
for /f "delims=" %%a in ('dir /a-d /b 2^>nul') do (
del /f /q "%%a" && set /a n+=1 && set /a s+=%%~za
)
for /f "delims=" %%b in ('dir /ad /b 2^>nul') do (
rem dir /a /b "%%b"|findstr .* >nul || (rd "%%b" /q 2>nul && set /a m+=1)
if %%~zb == 0 (rd "%%b" /q 2>nul && set /a m+=1)
)
echo %%i
setlocal enabledelayedexpansion
echo 清理了!n!个文件,共计!s!字节
echo 清理了!m!个空文件夹
echo.
endlocal
popd
)
pause
这个能不能把字节改成MB?还有就是有一个空文件夹没删除
作者: buyixuelang 时间: 2015-3-17 23:35
回复 16# pcl_test
直接用这个覆盖吗?
作者: buyixuelang 时间: 2015-3-17 23:36
回复 16# pcl_test
不如你直接修改一下
作者: pcl_test 时间: 2015-3-18 00:08
回复 19# buyixuelang
改哪里还看不出吗?
作者: buyixuelang 时间: 2015-3-18 00:28
回复 20# pcl_test
@echo off
set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
cd /d "%FolderQQ%"
for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
set n=0 & set s=0 & set m=0
if exist "%FolderQQ%\%%i\Image\" pushd "%FolderQQ%\%%i\Image\"
for /f "delims=" %%a in ('dir /a-d /b 2^>nul') do (
del /f /q "%%a" && set /a n+=1 && set /a s+=%%~za
)
for /f "delims=" %%b in ('dir /ad /b 2^>nul') do (
rem dir /a /b "%%b"|findstr .* >nul || (rd "%%b" /q 2>nul && set /a m+=1)
if %%~zb == 0 (rd "%%b" /q 2>nul && set /a m+=1)
)
echo %%i
setlocal enabledelayedexpansion
set /a s=!s!/1048576
rem set /a s=!s!/1024,则是KB
echo 清理了!n!个文件,共计!s!MB
echo 清理了!m!个空文件夹
echo.
endlocal
?、、、、、、?对吗
作者: pcl_test 时间: 2015-3-18 00:33
本帖最后由 pcl_test 于 2015-3-18 00:40 编辑
回复 21# buyixuelang
嗯,这样显示就是MB了,后面还有三行代码要补全,Group文件夹没有删除的原因,16楼有说明
作者: buyixuelang 时间: 2015-3-18 01:00
回复 22# pcl_test
这样什么也没跑出来
作者: pcl_test 时间: 2015-3-18 01:04
回复 23# buyixuelang
22楼不是说了你缺三行代码没补全吗
作者: pcl_test 时间: 2015-3-18 01:06
回复 23# buyixuelang
改哪里,哪里没改,要弄清,没改的代码就要补全
作者: buyixuelang 时间: 2015-3-18 01:21
回复 25# pcl_test
你能不能直接给我弄一下,麻烦你了!谢谢您
作者: pcl_test 时间: 2015-3-18 02:56
本帖最后由 pcl_test 于 2015-3-18 06:20 编辑
回复 26# buyixuelang - @echo off
- set "FolderQQ=D:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- set n=0 & set s=0 & set m=0
- if exist "%FolderQQ%\%%i\Image\" pushd "%FolderQQ%\%%i\Image\"
- for /f "delims=" %%a in ('dir /a-d /b 2^>nul') do (
- del /f /q "%%a" && set /a n+=1 && set /a s+=%%~za
- )
- setlocal enabledelayedexpansion
- for /f "delims=" %%b in ('dir /ad /b 2^>nul') do (
- set t=0
- for /f "delims=" %%c in ('dir /a-d /s /b "%%b\" 2^>nul') do set /a t+=1
- if !t! == 0 (rd "%%b" /s /q && set /a m+=1)
- )
- echo %%i
- if !s! lss 1024 set "z=字节"
- if !s! geq 1024 if !s! lss 1048576 (set /a s=!s!/1024 & set "z= KB")
- if !s! geq 1048576 (set /a s=!s!/1048576 & set "z= MB")
- echo 清理了!n!个文件,共计!s!!z!
- echo 清理了!m!个空文件夹
- echo.
- endlocal
- popd
- )
- pause
复制代码
作者: buyixuelang 时间: 2015-3-18 10:34
回复 27# pcl_test
运行了一下,感觉还是KB,是不是文件太小了,多大才显示MB?
第二个问题是,为什么还有一个group文件夹没有删除掉,而且里面有文件,是可以手动删除的,按说应该里面的文件被删除,然后文件夹自然就成了空的,之后自然也就被当成空文件夹删除才对。
再次麻烦您了!
作者: buyixuelang 时间: 2015-3-18 10:48
回复 27# pcl_test
for /f "delims=" %%i in ('dir /b/s "D:\Program Files\Tencent\QQ2015\Users\173797719\Image\*.*"') do del /s/q "%%i"
曾经这个能把group的文件删掉。
作者: pcl_test 时间: 2015-3-18 10:52
回复 28# buyixuelang
1、文件太小,自己找些大于1M的文件放进去检测
2、Group没被清空,怎么能算空文件夹呢?所以当然删不了
作者: buyixuelang 时间: 2015-3-18 11:00
回复 30# pcl_test
可是为什么没有清空这个文件夹下的文件?其他的都清了,然后就变成空文件夹,自然也就清了,可是怎么连里面的文件也没有清掉?
然后新建一个文件夹进去,文件删了,空文件夹却保留下来了
作者: pcl_test 时间: 2015-3-18 11:12
本帖最后由 pcl_test 于 2015-3-18 11:48 编辑
回复 31# buyixuelang - @echo off
- set "FolderQQ=H:\Program Files\Tencent\QQ2015\Users"
- cd /d "%FolderQQ%"
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]*$"') do (
- if exist "%FolderQQ%\%%i\Image\" (rd /s /q "%FolderQQ%\%%i\Image\" && md "%FolderQQ%\%%i\Image\")
- )
- pause
复制代码
作者: buyixuelang 时间: 2015-3-18 11:18
回复 32# pcl_test
加到哪里?这样其他的功能不就没有了吗,来个完整的呗!谢谢您
作者: pcl_test 时间: 2015-3-18 11:25
回复 33# buyixuelang
32楼的是完整代码,没有加不加的问题,你一直把我往错误的方向去引导,耗时耗力,你要的那些显示也是没有什么作用,所以没必要增添多余代码影响效率
作者: buyixuelang 时间: 2015-3-18 11:45
回复 34# pcl_test
好的
作者: pcl_test 时间: 2015-3-18 11:48
回复 35# buyixuelang
没问题就结贴吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |