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

[文件操作] 【已解决】批处理7z批量压缩文件夹怎样把密码放在txt文件中调用?

本帖最后由 toyerspollors 于 2021-8-6 09:00 编辑

我想使用不同的密码批量压缩、或解压不同的文件夹,我现在是每个txt文件放一个密码,但是txt文件一多了不好管理,能不能实现把所有密码统一放在一个txt文件中进行调用啊?
  1. for /d %%X in (*男歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p<mima1.txt
  2. for /d %%X in (*女歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p<mima2.txt
  3. for /d %%X in (*电影*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p<mima3.txt
复制代码
-------------------------------------------------------------
要达到的效果
比如我有文件夹如下:

"萨德3 电影 2w0we0"
"dvw2 音乐 werw20"
"崩we 歌手 3fs245"
"学f2 动漫 20efs"
"fq3习 奥运 shrt6afc"

然后"mima.txt"内容如下:
:小妹妹
23423esfsfresfsdfsdfq3rwfs

:大妈
fsdfwefsdf353534534fsdf

:Jor
335efsdf353dg55y

想要达到的效果是,比如:
带有“电影”、“歌手”、“动漫”这些关键字字符的文件夹,都调用关键字“大妈”这组密码进行加密。
带有“奥运”关键字字符的文件夹,调用关键字“小妹妹”的密码进行加密。

本帖最后由 idwma 于 2021-8-3 23:36 编辑

还是套娃
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (mima.txt) do (
  3. set/a n+=1
  4. if "!n!"=="1" for /d %%X in (*男歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  5. if "!n!"=="2" for /d %%X in (*女歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  6. if "!n!"=="3" for /d %%X in (*电影*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  7. )
复制代码

TOP

mima.txt  文件中的密码要怎么编写?一组密码一行吗?

能不能实现类似下面的这种方式进行调用啊?这样我也好管理编辑对应的密码。

:mima1
lfjsidhfiennsjcn3u8seifjsij

:mima2
23423esfsfresfsdfsdfq3rwfs

:mima3
fsdfwefsdf353534534fsdf

TOP

回复 3# toyerspollors


    可以
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type mima.txt^|findstr /v "^: ^$"') do (
  3. set/a n+=1
  4. if "!n!"=="1" for /d %%X in (*男歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  5. if "!n!"=="2" for /d %%X in (*女歌手*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  6. if "!n!"=="3" for /d %%X in (*电影*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  7. )
复制代码

TOP

回复  toyerspollors


    可以
idwma 发表于 2021-8-4 13:27


谢谢老师的帮助,不过这不是我想要的效果,看到老师2次编写的都是调取mima文件中的行数值来确定调用的密码,是我前面没有表达清楚,不好意思!我重新表达一下。

如“mima.txt”文件中的内容如下,这些只是举例子,我也不知道能不能这样编写。
:小妹妹
23423esfsfresfsdfsdfq3rwfs

:**姐
fsdfwefsdf353534534fsdf

:Jor
335efsdf353dg55y

然后在bat命令中,设置识别“小妹妹”、“**姐”、“Jor”这些值,然后它就会调用下方对应的这些密码进行加密或解密。而不是去识别文本的行数来调用对应的密码。表达能力有限,不知道老师是否理解。

TOP

“小 姐 姐” 被和谐了

TOP

本帖最后由 idwma 于 2021-8-4 15:25 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (mima.txt) do (
  3. set s=%%i
  4. set/a n+=1
  5. if "!s:~0,1!"==":" set/a nn=!n!+1 &set ss=!s:~1!
  6. if "!n!"=="!nn!" for /d %%X in (*!ss!*) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=
  7. )
  8. pause
复制代码

TOP

回复 7# idwma

  谢谢老师,这个批处理能正常使用,不过密码只能一对一,使用起来不够灵活,能不能再修改一下达到下方的效果,这样也便于我自己后期灵活变动“关键字”。

比如我有文件夹如下:

"萨德3 电影 2w0we0"
"dvw2 音乐 werw20"
"崩we 歌手 3fs245"
"学f2 动漫 20efs"
"fq3习 奥运 shrt6afc"

然后"mima.txt"内容如下:
:小妹妹
23423esfsfresfsdfsdfq3rwfs

:大妈
fsdfwefsdf353534534fsdf

:Jor
335efsdf353dg55y

想要达到的效果是,比如:
带有“电影”、“歌手”、“动漫”这些关键字字符的文件夹,都调用关键字“大妈”这组密码进行加密。
带有“奥运”关键字字符的文件夹,调用关键字“小妹妹”的密码进行加密。

TOP

本帖最后由 idwma 于 2021-8-4 21:08 编辑

回复 8# toyerspollors
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (mima.txt) do (
  3. set s=%%i
  4. set/a n+=1
  5. if "!s:~0,1!"==":" set/a nn=!n!+1 &set ss=!s:~1!
  6. if "!ss!"=="大妈" if "!n!"=="!nn!" for /f "delims=" %%X in ('dir/ad/b *电影* *歌手* *动漫*') do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=
  7. if "!ss!"=="小妹" if "!n!"=="!nn!" for /f "delims=" %%X in ('dir/ad/b *奥运*') do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=
  8. )
  9. pause
复制代码
1

评分人数

TOP

本帖最后由 toyerspollors 于 2021-8-6 09:10 编辑

回复 9# idwma
    @echo off&setlocal enabledelayedexpansion
    for /f "delims=" %%i in (mima.txt) do (
    set s=%%i
    set/a n+=1

    if "!s:~0,1!"==":" set/a nn=!n!+1 &set ss=!s:~1!
    if "!ss!"=="大妈" if "!n!"=="!nn!" for /f "delims=" %%X in ('dir/ad/b *电影* *歌手* *动漫*') do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=
   if "!ss!"=="小妹" if "!n!"=="!nn!" for /f "delims=" %%X in ('dir/ad/b *奥运*') do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=
    )
    pause

   
谢谢老师的帮助,看到老师编写的命名很实用,因我是一个bat业余初学者,请教一下,不知道以上红色字体标注的这些命令,要看那些教程能快速理解明白里面的意思?
还有我平时使用set变量,后面都是使用 %关键字% 的,这里看到老师貌似使用 !关键字! ,不知道区别是什么,是在什么情况下选择不同的用法?

TOP

TOP

回复 11# qixiaobin0715


    谢谢帮助!

TOP

if "!ss!"=="大妈" if "!n!"=="!nn!" for /f "delims=" %%X in ('dir/ad/b *电影* *歌手* *动漫*') do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i &set nn=

最后面的   &set nn=  如何理解??

TOP

回复 13# toyerspollors
表示清空变量的值。

TOP

回复 10# toyerspollors


对于刚刚接触BAT脚本的朋友们,建议把格式写的易读一点,例如:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (mima.txt) do (
  4.     set s=%%i
  5.     set /a n+=1
  6.     if "!s:~0,1!"==":" (
  7.         set /a nn=!n!+1
  8.         set ss=!s:~1!
  9.     )
  10.     if "!ss!"=="大妈" (
  11.          if "!n!"=="!nn!" (
  12.             for /f "delims=" %%X in ('dir /ad /b *电影* *歌手* *动漫*') do (
  13.                 "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  14.                 set nn=
  15.             )
  16.          )
  17.     ) else if "!ss!"=="小妹" (
  18.         if "!n!"=="!nn!" (
  19.             for /f "delims=" %%X in ('dir /ad /b *奥运*') do (
  20.                 "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" -mhcf -mhe -mx=9 -p%%i
  21.                 set nn=
  22.             )
  23.         )
  24.     )
  25. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表