Board logo

标题: [文件操作] 求BAT操作文件夹判断是否合格;合格进行压缩处理 [打印本页]

作者: bat小猎手    时间: 2021-11-8 10:05     标题: 求BAT操作文件夹判断是否合格;合格进行压缩处理

判断文件夹文件数量;文件后缀;文件夹名称;三者都合格;进行压缩文件夹处理。求大神援手。。。。
作者: Batcher    时间: 2021-11-8 11:40

回复 1# bat小猎手


    请举例说明合格的具体条件是什么?
作者: bat小猎手    时间: 2021-11-9 10:12

回复 2# Batcher


    合格就是说,1.在数量上符合要求;至少有1个文件;2,在文件后缀上;必须是指定格式;例如 txt,3.在文件夹名称上;必须是指定名称
作者: Batcher    时间: 2021-11-9 13:07

回复 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
复制代码

作者: bat小猎手    时间: 2021-11-16 09:21

回复 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文件夹,或者不符合要求的;不对其进行压缩处理
作者: Batcher    时间: 2021-11-16 09:58

回复 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
复制代码

作者: bat小猎手    时间: 2021-11-16 10:37

回复 6# Batcher


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

:kiss:
作者: Batcher    时间: 2021-11-16 11:09

回复 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
复制代码

作者: bat小猎手    时间: 2021-11-30 11:01

回复 8# Batcher

大神,在压缩工具目录里,怎么去判断他的压缩工具是在C盘的Program Files文件夹还是C盘的Program Files(x86)里面呢
作者: Batcher    时间: 2021-11-30 11: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
复制代码

作者: bat小猎手    时间: 2022-1-9 16:34

回复  bat小猎手
Batcher 发表于 2021-11-30 11:10


大神;麻烦在里面如何在增加一个判断:文件夹内文件数量不能为0;为零的话不做打包处理;还有一个就是名称。就比如说在A文件夹内必须有“1.txt”,“2.txt”文件。如没有。也跳出程序;给出提示
作者: Batcher    时间: 2022-1-9 16:59

回复 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
复制代码

作者: bat小猎手    时间: 2022-1-9 18:08     标题: qq

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

qq q q q q q q




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