[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
在 win7 测试, 对于其他系统版本以及进一步的要求, 请自行修改
  1. @echo off
  2. >nul chcp 936
  3. setlocal enableDelayedExpansion
  4. set "ftype=zip"
  5. REM 压缩比 0~5 可选, 0 最低, 5 最高
  6. set "mmode=5"
  7. REM 密码
  8. set "pwd=mypassword"
  9. REM 对目录压缩
  10. set "r_param=-r"
  11. cd /d "%~dp0"
  12. REM 生成随机标记串
  13. set "neorand=neorand_"
  14. for /l %%a in (1 1 5) do (
  15.     set "neorand=!neorand!!random:~-1!"
  16. )
  17. echo;随机标记串
  18. set neorand
  19. REM 搜索出 winrar 的全路径
  20. set "filename=winrar.exe"
  21. call :searchFile winrarFullname
  22. echo;winrar 的全路径
  23. echo;winrarFullname={!winrarFullname!}
  24. for /f "delims=" %%A in ('dir /ad /b') do (
  25.     echo;%%A
  26.     REM echo;"%winrarFullname%" a -ag-YYYYMMDD_HHMMSS -m%mmode% -af%ftype% "%%~dpA!neorand!%%~nxA.%ftype%" -p%pwd% %r_param% -ep1 "%%~A"
  27.     "%winrarFullname%" a -ag-YYYYMMDD_HHMMSS -m%mmode% -af%ftype% "%%~dpA!neorand!%%~nxA.%ftype%" -p%pwd% %r_param% -ep1 "%%~A"
  28.     REM 生成注释文件
  29.     > "%~dp0rarcomment.txt" (
  30.         echo;"%%~nxA.%ftype%" 生成于 %date%_%time%
  31.         echo;pwd
  32.         echo;!pwd!
  33.     )
  34.     REM 找出含有 随机标记串 前缀 日期时间 后缀 的压缩文件名
  35.     set "arcname="
  36.     for /f "delims=" %%a in ('dir /a-d /b "%%~dpA!neorand!%%~nxA*.%ftype%"') do (
  37.         if "!arcname!"=="" (
  38.             set "arcname=%%~fa"
  39.         )
  40.     )
  41.     REM echo;含有 随机标记串 前缀 日期时间 后缀 的压缩文件名
  42.     set arcname
  43.     REM 添加注释
  44.     "%winrarFullname%" c -z"%~dp0rarcomment.txt" "!arcname!"
  45.     del "%~dp0rarcomment.txt"
  46.     REM 去掉 随机标记串
  47.     for %%a in ("!arcname!") do (
  48.         echo;%%~nxa
  49.         set "fn=%%~nxa"
  50.         set "fn=!fn:~13!"
  51.     )
  52.     ren "!arcname!" "!fn!"
  53. )
  54. title 压缩包已经生成, 按任意键退出...
  55. <nul set /p "=压缩包已经生成, 按任意键退出..."
  56. if exist "%windir%\System32\timeout.exe" (
  57. timeout /t 10
  58. ) else (
  59. >nul pause
  60. )
  61. exit
  62. :searchFile winrarFullname
  63. REM ProgramData=C:\ProgramData
  64. REM ProgramFiles=C:\Program Files
  65. REM ProgramFiles(x86)=C:\Program Files (x86)
  66. REM ProgramW6432=C:\Program Files
  67. setlocal enableDelayedExpansion
  68. set "rt="
  69. for %%d in (C D E) do (
  70.     if "!rt!"=="" (
  71.         for %%V in ("ProgramFiles" "ProgramFiles(x86)" "ProgramData" "ProgramW6432") do (
  72.             if "!rt!"=="" if "!%%~V!" neq "" (
  73.                 for /f "delims=" %%p in ('dir "%%d!%%~V:~1!\!filename!" /a /s /b') do (
  74.                     if "!rt!"=="" if /i "%%~nxp"=="!filename!" (
  75.                         set "rt=%%~p"
  76.                     )
  77.                 )
  78.             )
  79.         )
  80.     )
  81. )
  82. if "!rt!"=="" (
  83.     for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  84.         if "!rt!"=="" (
  85.             for /f "delims=" %%p in ('dir %%d:\"!filename!" /a /s /b') do (
  86.                 if "!rt!"=="" if /i "%%~nxp"=="!filename!" (
  87.                     set "rt=%%~p"
  88.                 )
  89.             )
  90.         )
  91.     )
  92. )
  93. ( ENDLOCAL & REM RETURN VALUES
  94.     IF "%~1" NEQ "" (SET %~1=%rt%) ELSE (echo;%rt%)
  95.     exit /b
  96. )
  97. exit /b
复制代码
1

评分人数

TOP

返回列表