Board logo

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

作者: toyerspollors    时间: 2021-8-3 22:01     标题: 【已解决】批处理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:18

本帖最后由 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. )
复制代码

作者: toyerspollors    时间: 2021-8-4 00:09

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

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

:mima1
lfjsidhfiennsjcn3u8seifjsij

:mima2
23423esfsfresfsdfsdfq3rwfs

:mima3
fsdfwefsdf353534534fsdf
作者: idwma    时间: 2021-8-4 13:27

回复 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. )
复制代码

作者: toyerspollors    时间: 2021-8-4 14:31

回复  toyerspollors


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


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

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

:**姐
fsdfwefsdf353534534fsdf

:Jor
335efsdf353dg55y

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

“小 姐 姐” 被和谐了
作者: idwma    时间: 2021-8-4 14:58

本帖最后由 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
复制代码

作者: toyerspollors    时间: 2021-8-4 20:21

回复 7# idwma

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

比如我有文件夹如下:

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

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

:大妈
fsdfwefsdf353534534fsdf

:Jor
335efsdf353dg55y

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

本帖最后由 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
复制代码

作者: toyerspollors    时间: 2021-8-6 09:06

本帖最后由 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变量,后面都是使用 %关键字% 的,这里看到老师貌似使用 !关键字! ,不知道区别是什么,是在什么情况下选择不同的用法?
作者: qixiaobin0715    时间: 2021-8-6 09:12

本帖最后由 qixiaobin0715 于 2021-8-6 09:15 编辑

http://bbs.bathome.net/thread-14927-1-1.html
http://www.bathome.net/viewthrea ... &from=favorites
http://www.bathome.net/viewthread.php?tid=2189&from=favorites
作者: toyerspollors    时间: 2021-8-6 09:35

回复 11# qixiaobin0715


    谢谢帮助!
作者: toyerspollors    时间: 2021-8-6 14:37

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=  如何理解??
作者: qixiaobin0715    时间: 2021-8-6 15:22

回复 13# toyerspollors
表示清空变量的值。
作者: Batcher    时间: 2021-8-6 21:48

回复 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. )
复制代码

作者: idwma    时间: 2021-8-6 22:30

回复 15# Batcher


    呃这主要是懒,管理员你看论坛的这个插入代码,可不可以加个自动格式化的功能
作者: Batcher    时间: 2021-8-7 19:00

回复 16# idwma


    建议找个趁手的编辑器用来写BAT代码。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2