找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23064|回复: 12

[文件操作] 求BAT操作文件夹判断是否合格;合格进行压缩处理

[复制链接]
发表于 2021-11-8 10:05:43 | 显示全部楼层 |阅读模式
判断文件夹文件数量;文件后缀;文件夹名称;三者都合格;进行压缩文件夹处理。求大神援手。。。。
发表于 2021-11-8 11:40:03 | 显示全部楼层
回复 1# bat小猎手


    请举例说明合格的具体条件是什么?
 楼主| 发表于 2021-11-9 10:12:57 | 显示全部楼层
回复 2# Batcher


    合格就是说,1.在数量上符合要求;至少有1个文件;2,在文件后缀上;必须是指定格式;例如 txt,3.在文件夹名称上;必须是指定名称
发表于 2021-11-9 13:07:45 | 显示全部楼层
回复 3# bat小猎手
  1. @echo off
  2. cd /d "%~dp0"
  3. REM 指定文件夹名称
  4. set "FolderName=身份证"
  5. REM 指定文件扩展名
  6. set "FileExt=txt"
  7. REM 根据自己电脑实际情况设置 7-Zip 的路径
  8. set "path=C:\Program Files\7-Zip;%path%"

  9. for /f "delims=" %%i in ('dir /b /s /ad "%FolderName%"') do (
  10.     echo 正在处理文件夹 %%i
  11.     pushd "%%i"
  12.     if exist "*.txt" (
  13.         7z.exe a "%%~nxi.zip" "%%i"
  14.     )
  15.     popd
  16. )
  17. pause
复制代码
 楼主| 发表于 2021-11-16 09:21:22 | 显示全部楼层
回复 4# Batcher
  1. @echo off
  2. if not exist a echo "缺少A文件夹"
  3. if not exist b echo "缺少b文件夹"
  4. if not exist c echo "缺少c文件夹"

  5. For /r %%i IN (*) DO if not %%~xi == .txt if not %%~xi== .bat echo"存在后缀名不为txt的文件” %%i
  6. pause
复制代码
这段是可以达到检测出 文件夹名是否符合要求。文件夹内文件是否符合要求。但是这个应该怎么去中断操作? 意思就是说:如果检测出文件夹名不符合要求或文件夹内文件不符合要求该怎么退出操作 下面还有其他操作的
比如说 "C:\Program Files\7-Zip\7z.exe" a  30.zip .\a\      如果没有a文件夹,或者不符合要求的;不对其进行压缩处理
发表于 2021-11-16 09:58:42 | 显示全部楼层
回复 5# bat小猎手
  1. @echo off
  2. set "ExecFlag=1"
  3. for %%i in (inCertificate smCertificate smRoot root) do (
  4.     if not exist %%i (
  5.         echo 缺少文件夹 %%i
  6.         set "ExecFlag=0"
  7.     )
  8. )
  9. for /r %%i in (*) do (
  10.     if not %%~xi == .pem (
  11.         if not %%~xi == .bat (
  12.             echo 存在后缀名不为pem的文件 %%i
  13.             set "ExecFlag=0"
  14.         )
  15.     )
  16. )
  17. if %ExecFlag% == 1 (
  18.     echo "C:\Program Files\7-Zip\7z.exe" a  30.zip .\a\
  19. )
  20. pause
复制代码
 楼主| 发表于 2021-11-16 10:37:53 | 显示全部楼层
回复 6# Batcher


    大神;在里面增加一个判断。。。。
         root文件夹文件数量不超过20个不少于1个的判断;否则也不进行压缩处理

:kiss:
发表于 2021-11-16 11:09:16 | 显示全部楼层
回复 7# bat小猎手
  1. @echo off
  2. set "RootMax=20"
  3. set "FileCount=0"
  4. set "ExecFlag=1"
  5. for %%i in (inCertificate smCertificate smRoot root) do (
  6.     if not exist %%i (
  7.         echo 缺少文件夹 %%i
  8.         set "ExecFlag=0"
  9.     )
  10. )
  11. for /r %%i in (*) do (
  12.     if not %%~xi == .pem (
  13.         if not %%~xi == .bat (
  14.             echo 存在后缀名不为pem的文件 %%i
  15.             set "ExecFlag=0"
  16.         )
  17.     )
  18. )
  19. for /f "delims=" %%i in ('dir /b /a-d root\*.*') do (
  20.     set /a FileCount+=1
  21. )
  22. if %FileCount% gtr %RootMax% (
  23.     echo root文件夹文件[%FileCount%个]超过[%RootMax%个]
  24.     set "ExecFlag=0"
  25. )
  26. echo %ExecFlag%
  27. if %ExecFlag% == 1 (
  28.     echo "C:\Program Files\7-Zip\7z.exe" a  30.zip .\a\
  29. )
  30. pause
复制代码
 楼主| 发表于 2021-11-30 11:01:44 | 显示全部楼层
回复 8# Batcher

大神,在压缩工具目录里,怎么去判断他的压缩工具是在C盘的Program Files文件夹还是C盘的Program Files(x86)里面呢
发表于 2021-11-30 11:10:10 | 显示全部楼层
回复 9# bat小猎手
  1. @echo off
  2. if exist "C:\Program Files\7-Zip\7z.exe" (
  3.     echo "C:\Program Files\7-Zip\7z.exe"
  4. ) else if exist "C:\Program Files (x86)\7-Zip\7z.exe" (
  5.     echo "C:\Program Files (x86)\7-Zip\7z.exe"
  6. ) else (
  7.     echo No 7z.exe
  8. )
  9. pause
复制代码
 楼主| 发表于 2022-1-9 16:34:29 | 显示全部楼层
回复  bat小猎手
Batcher 发表于 2021-11-30 11:10


大神;麻烦在里面如何在增加一个判断:文件夹内文件数量不能为0;为零的话不做打包处理;还有一个就是名称。就比如说在A文件夹内必须有“1.txt”,“2.txt”文件。如没有。也跳出程序;给出提示
发表于 2022-1-9 16:59:46 | 显示全部楼层
回复 11# bat小猎手
  1. @echo off
  2. set "RootMax=20"
  3. set "FileCount=0"
  4. set "ExecFlag=1"
  5. for %%i in (inCertificate smCertificate smRoot root) do (
  6.     if not exist %%i (
  7.         echo 缺少文件夹 %%i
  8.         set "ExecFlag=0"
  9.     )
  10. )
  11. for /r %%i in (*) do (
  12.     if not %%~xi == .pem (
  13.         if not %%~xi == .bat (
  14.             echo 存在后缀名不为pem的文件 %%i
  15.             set "ExecFlag=0"
  16.         )
  17.     )
  18. )
  19. for /f "delims=" %%i in ('dir /b /a-d root\*.*') do (
  20.     set /a FileCount+=1
  21. )
  22. if %FileCount% gtr %RootMax% (
  23.     echo root文件夹文件[%FileCount%个]超过[%RootMax%个]
  24.     set "ExecFlag=0"
  25. )

  26. REM 文件夹内文件数量不能为0;为零的话不做打包处理
  27. set "FileCount=0"
  28. for /f "delims=" %%i in ('dir /b /a-d inCertificate\*.*') do (
  29.     set /a FileCount+=1
  30. )
  31. if %FileCount% gtr %RootMax% (
  32.     echo inCertificate文件夹文件[%FileCount%个]
  33.     set "ExecFlag=0"
  34. )

  35. REM root文件夹下必须有1.txt和2.txt这两个文件
  36. if not exist "root\1.txt" (
  37.     echo 不存在文件 "root\1.txt"
  38.     set "ExecFlag=0"
  39. ) else if not exist "root\2.txt" (
  40.     echo 不存在文件 "root\2.txt"
  41.     set "ExecFlag=0"
  42. )

  43. echo %ExecFlag%
  44. if %ExecFlag% == 1 (
  45.     echo "C:\Program Files\7-Zip\7z.exe" a  30.zip .\a\
  46. )
  47. pause
复制代码
 楼主| 发表于 2022-1-9 18:08:54 | 显示全部楼层

qq

[i=s] 本帖最后由 bat小猎手 于 2022-1-9 19:55 编辑 [/i]

qq q q q q q q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 15:24 , Processed in 0.023124 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表