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

[文件操作] 如何批量打包单个文件并设置随机密码?

本帖最后由 pcl_test 于 2016-1-27 19:30 编辑
  1. @echo off
  2. REM ======================================================================
  3. REM
  4. REM Batch File -- Created with SAPIEN Technologies PrimalScript 4.0
  5. REM
  6. REM NAME: 批量加密打包单个文件
  7. REM
  8. REM AUTHOR: hitme ,
  9. REM DATE : 2006-12-16
  10. REM
  11. REM COMMENT: 密码由随机数字组成,长度与文件名长度相同
  12. REM
  13. REM ======================================================================
  14. @echo off
  15. :repare
  16. del pass.txt tmp.txt 2>nul
  17. md package 2>nul
  18. setlocal ENABLEDELAYEDEXPANSION
  19. :input
  20. echo.
  21. set /p input=加密打包文件还是文件夹^(F=文件,D=文件夹,A=全部^)
  22. echo.
  23. if /i "%input%"=="f" (set key=/aa) else (
  24.       if /i "%input%"=="d" (set key=/ad) else (
  25.                 if /i "%input%"=="a" (set key=) else goto :input))
  26. :code
  27. for /f "delims=" %%i in ('dir %key%/b^|findstr /v "%~nx0 package"') do (
  28.        echo.%%i>tmp.txt
  29.        echo. >>tmp.txt
  30.        for /f "delims=:" %%a in ('findstr /o "." tmp.txt') do (
  31.         set /a len=%%a - 2
  32.        )
  33.        set m=
  34.        for /l %%l in (1,1,!len!) do (
  35.         echo %random% >nul
  36.         set m=!m!!random:~-1!
  37.        )
  38.        echo %%i:!m!>>pass.txt
  39.        del tmp.txt>nul
  40.       
  41. )
  42. endlocal
  43. :package
  44. setlocal
  45. set path=%path%;c:\program files\winrar
  46. if exist pass.txt (
  47.      for /f "tokens=1* delims=:" %%i in (pass.txt) do rar a -p%%j "package\%%~ni.rar" "%%i"
  48.      move pass.txt package
  49.      start package
  50. ) else echo...未能打包 & pause
  51. endlocal
复制代码
此代码可以对多个文件进行批量压缩并加密,密码由随机数字组成,长度与文件名长度相同。由于密码太长,请各位大师帮助将密码由随机数字(0-9)和小写英文字母(a-z)组成,但长度为固定的10位组成。

本帖最后由 apang 于 2012-2-26 13:45 编辑

偶来试试,密码固定10位,由数字和小写字母组成。
  1. @echo off
  2. REM ======================================================================
  3. REM
  4. REM Batch File -- Created with SAPIEN Technologies PrimalScript 4.0
  5. REM
  6. REM NAME: 批量加密打包单个文件
  7. REM
  8. REM AUTHOR: hitme ,
  9. REM DATE : 2006-12-16
  10. REM
  11. REM COMMENT: 密码由数字和小写英文字母随机组成,长度固定为10位
  12. REM
  13. REM ======================================================================
  14. :repare
  15. del pass.txt 2>nul
  16. md package 2>nul
  17. setlocal ENABLEDELAYEDEXPANSION
  18. :input
  19. echo.
  20. set /p input=加密打包文件还是文件夹^(F=文件,D=文件夹,A=全部^)
  21. echo.
  22. if /i "!input!"=="f" (set key=/aa) else (
  23.       if /i "!input!"=="d" (set key=/ad) else (
  24.                 if /i "!input!"=="a" (set key=) else goto :input))
  25. :code
  26. for /f "delims=" %%i in ('dir !key!/b^|findstr /v "%~nx0 package"') do (
  27.       set m=
  28.       for /l %%l in (1 1 10) do (
  29.           set/a var=!random!%%36
  30.           set "str=0123456789abcdefghijklmnopqrstuvwxyz"
  31.           call set str=%%str:~!var!,1%%
  32.           set m=!m!!str!
  33.       )
  34.       echo %%i:!m!>>pass.txt
  35. )
  36. :package
  37. set path=!path!;c:\program files\winrar
  38. if exist pass.txt (
  39.      for /f "tokens=1* delims=:" %%i in (pass.txt) do rar a -p%%j "package\%%~ni.rar" "%%i"
  40.      move pass.txt package
  41.      start "" package
  42. ) else echo...未能打包 & pause
  43. endlocal
复制代码

TOP

2楼的代码,我运行后不成呀?
问题1、源程序运行后让用户选择:F=文件,D=文件夹,A=全部,哪一项。2楼的代码没有。
问题2、源程序运行结束后,产生名为package的文件夹,并且单个文件的压缩包和密码表都存在这里。 2楼的代码运行结束后,产生名为package和2nul两个文件夹,这两个文件夹都是空的。
问题3、2楼的代码运行结束后,没有对单个文件进行压缩加密,也没有生成密码表。

TOP

回复 3# dawei124578


    楼主用什么系统?是不是md package 2>nul 被写成 md package 2nul了?
请点击代码下面的“复制代码”进行复制,不要用鼠标框选复制。

TOP

正在愁这问题!正好找到了!

TOP

看的有点晕呀

TOP

返回列表