标题: [文件操作] 如何批量打包单个文件并设置随机密码? [打印本页]
作者: dawei124578 时间: 2012-2-25 21:13 标题: 如何批量打包单个文件并设置随机密码?
本帖最后由 pcl_test 于 2016-1-27 19:30 编辑
- @echo off
- REM ======================================================================
- REM
- REM Batch File -- Created with SAPIEN Technologies PrimalScript 4.0
- REM
- REM NAME: 批量加密打包单个文件
- REM
- REM AUTHOR: hitme ,
- REM DATE : 2006-12-16
- REM
- REM COMMENT: 密码由随机数字组成,长度与文件名长度相同
- REM
- REM ======================================================================
- @echo off
-
- :repare
- del pass.txt tmp.txt 2>nul
- md package 2>nul
-
-
- setlocal ENABLEDELAYEDEXPANSION
- :input
- echo.
- set /p input=加密打包文件还是文件夹^(F=文件,D=文件夹,A=全部^)
- echo.
- if /i "%input%"=="f" (set key=/aa) else (
- if /i "%input%"=="d" (set key=/ad) else (
- if /i "%input%"=="a" (set key=) else goto :input))
-
- :code
- for /f "delims=" %%i in ('dir %key%/b^|findstr /v "%~nx0 package"') do (
- echo.%%i>tmp.txt
- echo. >>tmp.txt
- for /f "delims=:" %%a in ('findstr /o "." tmp.txt') do (
- set /a len=%%a - 2
- )
- set m=
- for /l %%l in (1,1,!len!) do (
- echo %random% >nul
- set m=!m!!random:~-1!
- )
- echo %%i:!m!>>pass.txt
- del tmp.txt>nul
-
- )
- endlocal
-
- :package
- setlocal
- set path=%path%;c:\program files\winrar
- if exist pass.txt (
- for /f "tokens=1* delims=:" %%i in (pass.txt) do rar a -p%%j "package\%%~ni.rar" "%%i"
- move pass.txt package
- start package
- ) else echo...未能打包 & pause
- endlocal
复制代码
此代码可以对多个文件进行批量压缩并加密,密码由随机数字组成,长度与文件名长度相同。由于密码太长,请各位大师帮助将密码由随机数字(0-9)和小写英文字母(a-z)组成,但长度为固定的10位组成。
作者: apang 时间: 2012-2-26 01:35
本帖最后由 apang 于 2012-2-26 13:45 编辑
偶来试试,密码固定10位,由数字和小写字母组成。- @echo off
- REM ======================================================================
- REM
- REM Batch File -- Created with SAPIEN Technologies PrimalScript 4.0
- REM
- REM NAME: 批量加密打包单个文件
- REM
- REM AUTHOR: hitme ,
- REM DATE : 2006-12-16
- REM
- REM COMMENT: 密码由数字和小写英文字母随机组成,长度固定为10位
- REM
- REM ======================================================================
-
- :repare
- del pass.txt 2>nul
- md package 2>nul
-
- setlocal ENABLEDELAYEDEXPANSION
- :input
- echo.
- set /p input=加密打包文件还是文件夹^(F=文件,D=文件夹,A=全部^)
- echo.
- if /i "!input!"=="f" (set key=/aa) else (
- if /i "!input!"=="d" (set key=/ad) else (
- if /i "!input!"=="a" (set key=) else goto :input))
-
- :code
- for /f "delims=" %%i in ('dir !key!/b^|findstr /v "%~nx0 package"') do (
- set m=
- for /l %%l in (1 1 10) do (
- set/a var=!random!%%36
- set "str=0123456789abcdefghijklmnopqrstuvwxyz"
- call set str=%%str:~!var!,1%%
- set m=!m!!str!
- )
- echo %%i:!m!>>pass.txt
- )
-
- :package
- set path=!path!;c:\program files\winrar
- if exist pass.txt (
- for /f "tokens=1* delims=:" %%i in (pass.txt) do rar a -p%%j "package\%%~ni.rar" "%%i"
- move pass.txt package
- start "" package
- ) else echo...未能打包 & pause
- endlocal
复制代码
作者: dawei124578 时间: 2012-2-26 09:29
2楼的代码,我运行后不成呀?
问题1、源程序运行后让用户选择:F=文件,D=文件夹,A=全部,哪一项。2楼的代码没有。
问题2、源程序运行结束后,产生名为package的文件夹,并且单个文件的压缩包和密码表都存在这里。 2楼的代码运行结束后,产生名为package和2nul两个文件夹,这两个文件夹都是空的。
问题3、2楼的代码运行结束后,没有对单个文件进行压缩加密,也没有生成密码表。
作者: apang 时间: 2012-2-26 13:53
回复 3# dawei124578
楼主用什么系统?是不是md package 2>nul 被写成 md package 2nul了?
请点击代码下面的“复制代码”进行复制,不要用鼠标框选复制。
作者: conglin58 时间: 2012-5-2 20:47
正在愁这问题!正好找到了!
作者: 小小的幸福 时间: 2016-1-27 15:20
看的有点晕呀
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |