[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

TOP

回复 8# buyiyang

试试7楼的代码运行结果,应该总是显示‘成功’,除非在for之前errorlevel已被赋予非零值...

TOP

回复 7# aloha20200628

if errorlevel 0 如何证明 errorlevel 会被预赋值为零

TOP


在任何一个复合语块(如for或if)中的 %var% 变量均会被预先赋值,errorlevel亦是%var%
例如下式中的 errorlevel 会被预赋值为零,而无视循环体内每次 rar.exe 的真实返回值
假定下式中的 abc.zip, 123.rar 均为不存在的压缩包文件...
  1. @echo off &for %%F in ("abc.zip" "123.rar") do (
  2. rar.exe x %%F 2>nul >nul
  3. if errorlevel 0 (echo,解压成功) else echo,解压失败
  4. )
  5. pause&exit/b
复制代码

TOP

  1. @echo off
  2. set "input=D:\我的文档\桌面\批量压缩文件\实例\A"
  3. set "output=D:\我的文档\桌面\批量压缩文件\实例\B"
  4. rem 采用7zip压缩,请修改为实际路径
  5. set "exe=D:\实际路径\7-Zip\7z.exe"
  6. set "pwd=20240731QWEasd"
  7. pushd %input%
  8. (for /d %%d in (*) do (
  9. "%exe%" a -p%pwd% -t7z "%output%\%%d.7z" ".\%%d\*" >nul 2>nul
  10. if errorlevel 1 (
  11. echo %DATE% %TIME% %%~fd --- 压缩失败
  12. ) else (
  13. echo %DATE% %TIME% %%~fd --- 压缩成功
  14. )
  15. ))>%~dp0LOG.txt
  16. popd
  17. start "" LOG.txt
  18. exit/b
复制代码

TOP

回复 4# 304802301


  
  1. @echo off
  2. rem 保存为ansi
  3. rem 代码使用winrar\下的rar.exe,使用需添加到系统环境变量,或者写明绝对路径
  4. cd /d "%~dp0"
  5. set pwd=QWEasd
  6. set f1=D:\实例_20240731_151654\A
  7. set f2=D:\实例_20240731_151654\C
  8. set log=d:\1.txt
  9. md "%f2%" 2>nul
  10. pushd "%f1%"
  11. call :getdt d
  12. (for /d %%d in (*) do (
  13. pushd "%%d"
  14. for /f "delims=" %%a in ('forfiles /s /m * /c "cmd /c if @isdir equ FALSE echo @relpath"') do (
  15. call :getdt
  16. set /p="%%~dpa,%%~nxa,"<nul
  17. rar a "%f2%\%%d.zip" -p%d%%pwd% "%%~a" 1>nul 2>nul
  18. if errorlevel 1 (
  19. echo 压缩失败
  20. ) else (
  21. echo 压缩成功
  22. )
  23. )
  24. popd
  25. ))>>"%log%"
  26. pause
  27. exit
  28. :getdt
  29. for /f %%a in ('wmic os get localdatetime ^|findstr [0-9]') do (
  30. set t=%%a
  31. )
  32. if "%~1" equ "d" (
  33. set %~1=%t:~0,4%%t:~4,2%%t:~6,2%
  34. ) else (
  35. set /p="%t:~0,4%年%t:~4,2%月%t:~6,2%日%t:~8,2%时%t:~10,2%分%t:~12,2%秒,"<nul
  36. )
  37. exit /b
复制代码
bat小白,请多指教!谢谢!

TOP

回复 2# 77七


    再补充下,只要A路径下的子文件夹,每个子文件夹及下面的文件+文件夹都打包成一个压缩包即可(不考虑再下一层子还是否有子文件夹的情况)。

TOP

回复 2# 77七

压缩过程中把压缩结果输出到指定路径的日志文件里,包含时间、文件名字、源文件的完整路径、压缩结果
XXXX年XX月XX日XX点XX分XX秒,XX路径,XX文件名,压缩成功
XXXX年XX月XX日XX点XX分XX秒,XX路径,XX文件名,压缩失败


就类似这种的日志格式,大致上差不多就行

TOP

上传3个文件夹和3个压缩包没什么意义...
日志文件相比来说更需要说明,请给个示例
bat小白,请多指教!谢谢!

TOP

返回列表