[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 77七 于 2023-8-29 17:00 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式。
  3. for /r "C:\指定目录" %%i in (*.pdf *.doc *.xls) do set _"%%i"=1
  4. for %%a in (c d e) do call :1 "%%a:\"
  5. pause
  6. exit
  7.         :1
  8.         for /r "%~1" %%b in (*.pdf *.doc *.xls) do (
  9.                 if not defined _"%%b" (
  10.                         rem 效果满意,则删除echo再执行
  11.                         echo del "%%b"
  12.                 )
  13.         )
  14.         exit /b
复制代码

代码有问题,参考5楼。
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 5# Batcher


   谢谢站长指点!没考虑到指定目录下会存在大量待排除文件。
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-8-29 17:08 编辑

重来一个。
  1. @echo off
  2. rem 批处理保存为ansi编码格式。请谨慎使用!
  3. set "folder=C:\指定目录"
  4. for %%a in (pdf doc xls) do attrib +H "%folder%\*.%%a" /s
  5. echo 确认待排除文件隐藏成功,则继续执行
  6. pause
  7. for %%a in (c d e) do (
  8.         pushd "%%a:\"
  9.         del /s /q *.pdf;*.doc;*.xls
  10.         popd
  11. )
  12. for %%a in (pdf doc xls) do attrib -H "%folder%\*.%%a" /s
  13. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 12# 7758234

  1. @echo off
  2. rem 批处理保存为ansi编码格式。请谨慎使用!
  3. set "folder1=C:\指定目录1"
  4. set "folder2=C:\指定目录2"
  5. for %%a in (pdf doc xls) do (
  6. attrib +H "%folder1%\*.%%a" /s
  7. attrib +H "%folder2%\*.%%a" /s
  8. )
  9. echo 确认待排除文件隐藏成功,则继续执行
  10. pause
  11. for %%a in (c d e) do (
  12.         pushd "%%a:\"
  13.         del /s /q *.pdf;*.doc;*.xls
  14.         popd
  15. )
  16. for %%a in (pdf doc xls) do (
  17. attrib -H "%folder1%\*.%%a" /s
  18. attrib -H "%folder2%\*.%%a" /s
  19. )
  20. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-8-30 12:31 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式。路径末尾以 \ 结束
  3. call :1 "c:\指定目录1\"
  4. call :1 "c:\指定目录2\"
  5. call :1 "c:\指定目录3\"
  6. for %%a in (c d e) do call :2 "%%a:\"
  7. pause & exit
  8. :1
  9. set _"%~1"=1
  10. rem 如果不需要排除子目录删除下一行
  11. for /r "%~1" /d %%d in (*) do set _"%%d\"=1
  12. exit /b
  13. :2
  14. for /r "%~1" %%i in (*.pdf *.doc *.xls) do (
  15. if not defined _"%%~dpi" (
  16. echo del "%%i"
  17. )
  18. )
  19. exit /b
复制代码

改进下2楼代码。如果子目录数量过多,还是会存在变量个数超限问题。
单个环境的最大变量大小为 8192 字节。所有变量(包括变量名称和等号)的最大环境变量总大小为 65,536KB。


http://bbs.bathome.net/redirect.php?goto=findpost&ptid=29022&pid=145079
windows路径长度限制260字符。
粗略估算,一般应该不会超限,但是如果子目录数量过万,变量过万,批处理存在效率降低问题。
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-8-31 15:45 编辑
  1. @echo off
  2. rem 批处理保存为ansi编码格式。路径末尾以 \ 结束
  3. call :1 "c:\指定目录1\"
  4. call :1 "c:\指定目录2\"
  5. call :1 "c:\指定目录3\"
  6. for %%a in (c d e) do call :2 "%%a:\"
  7. pause & exit
  8. :1
  9. set _"%~1"=1
  10. rem 如果不需要排除子目录删除下一行
  11. for /r "%~1" /d %%d in (*) do set _"%%d\"=1
  12. exit /b
  13. :2
  14. for /r "%~1" %%i in (*.pdf *.doc *.xls) do (
  15. if not defined _"%%~dpi" (
  16. >>"重命名.bat" echo ren "%%i" "%%~ni.tttt"
  17. >>"恢复.bat" echo ren "%%~dpni.tttt" "%%~nxi"
  18. )
  19. )
  20. exit /b
复制代码

执行后生成两个bat,重命名和恢复
bat小白,请多指教!谢谢!

TOP

回复 24# 7758234


  
rem 批处理保存为ansi编码格式。路径末尾以 \ 结束
call :1 "c:\指定目录1\"
请按这两行的要求、格式修改。
bat小白,请多指教!谢谢!

TOP

返回列表