Board logo

标题: [文件操作] [已解决]批处理检索一级子目录和一级子文件,名称中含有中文,就删除 [打印本页]

作者: ygqiang    时间: 2024-9-29 16:24     标题: [已解决]批处理检索一级子目录和一级子文件,名称中含有中文,就删除

[已解决]检索某个目录的根目录下,一级子目录和一级子文件,名称中含有中文,就删除对应的子目录和子文件。
比如:c:\360用户文件,c:\360极速浏览器X下载,c:\360安全浏览器下载,c:\Windows_10_64位_中文专业版.iso,类似的子目录及其所有子目录全删除,类似的子文件也删除。。
比如:C:\Users,C:\Program Files,C:\Program Files (x86),C:\Windows,这种英文的就不修改。
作者: aloha20200628    时间: 2024-9-29 18:07

本帖最后由 aloha20200628 于 2024-9-29 18:34 编辑

回复 1# ygqiang

以下代码存为 test.bat 放在根目录下运行
当前代码用于实际删除前预览删除结果是否正确,若仅删除第9行前缀 REM 关键字,和删除整个第10行则变为实际删除
  1. @echo off &setlocal
  2. for /f "delims=" %%F in ('dir /b/a-d') do set "nF=%%~nF"&call :testHZ 1 "%%F"
  3. for /f "delims=" %%D in ('dir /b/ad') do set "nF=%%~nD"&call :testHZ 2 "%%D"
  4. endlocal&pause&exit/b
  5. :testHZ
  6. if "%nF%"=="" (exit/b)
  7. set "c=%nF:~,1%"
  8. if "%c%" gtr "Z" (
  9. REM if %1 equ 1 (del /q "%~2") else (rd /s/q "%~2")
  10. if %1 equ 1 (echo,del /q "%~2") else (echo,rd /s/q "%~2")
  11. exit/b
  12. )
  13. set "nF=%nF:~1%" &goto :testHZ
  14. exit/b
复制代码

作者: ygqiang    时间: 2024-9-29 20:09

回复  ygqiang

以下代码存为 test.bat 放在根目录下运行
当前代码用于实际删除前预览删除结果是否正确 ...
aloha20200628 发表于 2024-9-29 18:07



    测试成功,感谢。
作者: qixiaobin0715    时间: 2024-9-30 08:59

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad^|findstr /r /c:"[^- '!-Z]"') do (
  3.     echo,rd /s /q /f "%%i"
  4. )
  5. for /f "delims=" %%i in ('dir /b /a-d^|findstr /r /c:"[^- '!-Z]"') do (
  6.     echo,del /f /q "%%i"
  7. )
  8. pause
复制代码

作者: ygqiang    时间: 2024-9-30 18:59

qixiaobin0715 发表于 2024-9-30 08:59



前面加上cd /d d:\
这个代码有问题,各种非中文的子目录和子文件,都会显示。




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