使用密码对一组文件进行打包 (WinRAR)

2023-12-12

我会尽力让它尽可能短。我正在寻找一个 .bat 文件来 rar 和密码文件夹,其中包含文件,但问题比我想象的要棘手一些,每个文件夹中可以包含 1 到 400 个文件,我有两个 .txt文件,一个具有所需数量的 .rar 文件名,一个具有所需数量的 .rar 密码,因此 txt 文档如下所示,第一个是filenames.txt:

FAD01    
FAD02    
FAD03

等等直到FAD110

和另一个 .txt 文件

GAP01
GAP02
GAP03
GAP04
GAP05

等等直到GAP50

第一个密码 .txt 文件如下所示

vF2RiQMof6HSWy8MSEIO
13qIsZ7e9RIzBwaQ3UO6
KfTMk9wPfPQKMNh4XzD8

依此类推,共110个随机密码

第二个密码 .txt 文件如下

al9p4O2vkiqcFKfgpWh7
U0jkx05nQoTKPAAPEYiW
43bliny0TU2R4CKob62H

依此类推,共50个随机密码

我想要做的是将 .txt 文档中的第一个 50 个文件名列表应用到主文件夹中的 50 个子文件夹,并且创建每个 .rar 所使用的第一个 50 个密码列表,所以我的结束结果将是 > 第一个主文件夹内有 50 个 rars,每个 rars 的密码都不同,我还希望对 .rar 文件密码进行加密,这样除非输入密码,否则您无法看到任何 .rar 文件的内容。

最终结果如下所示:

FAD01.rar > password = vF2RiQMof6HSWy8MSEIO
FAD02.rar > password = 13qIsZ7e9RIzBwaQ3UO6
FAD03.rar > password = KfTMk9wPfPQKMNh4XzD8

等等直到FAD110.rar

如果有人认为他们能做到,我愿意付钱给他们,或者如果你只是喜欢挑战并且有一颗伟大的心,那也很好:)并感谢你花时间阅读我的问题

额外信息

我创建了文件名和密码列表来帮助生成密码 rar 文件的过程,但是如果您可以在不需要预定义密码/文件名列表的情况下完成此操作,那么要做的工作就会减少,但我需要某种文件由 .bat 文件创建的名称/密码列表,以便我知道 .rar 有哪些密码。

列表很容易生成,所以我希望 bat 文件可以一次读取 1 行列表,并将文件名和密码应用到要 rar 的文件夹

基本上我正在寻找它来获取一组文件夹并以某种形式的字母顺序将它们单独rar,并对rar应用随机密码(这些密码应该是20个字符长并包含数字和大写/小写字母),但我想要 rar 加密,这是 winRAR 中的一个选项,它可以阻止用户在输入密码之前看到 rar 的内容

50到300个文件夹,每个文件夹包含大量文件,文件夹需要rar'd并使用随机加密密码进行加密,我目前一次做1个,确实非常耗时


假设这个目录结构:

\
└─SomeRootFolder
  ├─SuperfolderA
  │ ├─filenames.txt
  │ ├─passwords.txt
  │ ├─A1
  │ │ └─...
  │ ├─A2
  │ │ └─...
  │ └─...
  ├─SuperfolderB
  │ ├─filenames.txt
  │ ├─passwords.txt
  │ ├─B1
  │ │ └─...
  │ ├─B2
  │ │ └─...
  │ └─...
  └─...

(子文件夹A1, A2, ... B1, B2,...需要放入自己的档案中),以下内容对我有用:

@ECHO OFF
SET arch="C:\Program Files (x86)\WinRAR\WinRAR.exe"
SET "rootdir=D:\path\to\folders"
SET "namestxt=filenames.txt"
SET "passtxt=passwords.txt"

FOR /D %%D IN ("%rootdir%\*") DO (
  <"%%D\%passtxt%" (
    FOR /F "usebackq delims=" %%N IN ("%%D\%namestxt%") DO (
      SET /P "pass="
      SETLOCAL EnableDelayedExpansion
      %arch% a -r -ep1 -hp!pass! "%%D\%%N.rar" "%%D\%%N"
      ENDLOCAL
    )
  )
)

第一部分仅设置一些变量,稍后在脚本中使用。 (事实上​​,它们中的每一个都只在脚本中使用一次,因此您可以轻松地替换相应变量扩展的值。我只是习惯性地声明这些变量,我经常在批处理脚本中使用这样的变量。)

外循环,FOR /D一,迭代“超级文件夹”,其中包含要存档的子文件夹和文本文件。

循环体以这种方式读取两个文件:

  • the filenames.txt由内循环指令本身读取,FOR /F命令;

  • 密码文件由内部循环体中的命令之一读取,即SET /P. SET /P读取标准输入流,默认情况下是控制台,但在这种情况下,标准输入被重定向以使整个内部循环来自passwords.txt反而。

So, the %%D循环变量(外部循环的变量)包含“超级文件夹”的完整路径,%%N被分配了一个子文件夹的名称并且pass=被设置为相应的密码。此时只需调用归档器即可。

这些是归档器命令行中使用的参数:

  • a– 正确的 Add 命令(与 Extract 命令相反,Extract 命令是x,或更新,即u);

  • -r– 递归处理指定的文件夹(如果不需要,请删除此选项);

  • -ep– 从名称中排除基本文件夹;

  • -hp…– 使用指定的密码加密存档(与-p…,这仅仅保护了萃取; -hp不会让您在没有密码的情况下看到存档的内容,就像您似乎想要的那样)。

可以看到,在调用归档器之前,延迟扩展是启用的。如果您不知道括号中的命令块(包括循环体)中“立即”扩展的效果,我只想说,如果变量同时被分配和扩展,它就不会像您想要的那样工作相同的括号块。因此延迟了扩张。它用!s 而不是%s,你可以看到pass变量就这样扩展了。

还有一件事需要提及。如果您生成的密码少于其他文件中的名称,则脚本仍然可以正常工作,但缺少“自己”密码的名称将与列表中的最后一个密码配对。 (如果脚本也没有问题names少于密码。在这种情况下,将不会使用“孤立”密码。)


UPDATE

如果您想直接从目录中读取子文件夹名称,从而放弃filenames.txt文件,您可以像这样更改脚本:

@ECHO OFF
SET arch="C:\Program Files (x86)\WinRAR\WinRAR.exe"
SET "rootdir=D:\path\to\folders"
SET "namestxt=filenames.txt"
SET "passtxt=passwords.txt"

FOR /D %%D IN ("%rootdir%\*") DO (
  <"%%D\%passtxt%" (
    FOR /D %%N IN ("%%D\*") DO (
      SET /P "pass="
      SETLOCAL EnableDelayedExpansion
      %arch% a -m0 -r -ep1 -hp!pass! "%%N.rar" "%%N"
      ENDLOCAL
    )
  )
)

UPDATE 2

如果你想生成filenames.txt要从目录中动态读取名称的文件,只需将一个命令插入到第一个脚本的外循环中:

@ECHO OFF
SET arch="C:\Program Files (x86)\WinRAR\WinRAR.exe"
SET "rootdir=D:\path\to\folders"
SET "namestxt=filenames.txt"
SET "passtxt=passwords.txt"

FOR /D %%D IN ("%rootdir%\*") DO (
  DIR /AD /B "%%D" >"%%D\%namestxt%"
  <"%%D\%passtxt%" (
    FOR /F "usebackq delims=" %%N IN ("%%D\%namestxt%") DO (
      SET /P "pass="
      SETLOCAL EnableDelayedExpansion
      %arch% a -r -ep1 -hp!pass! "%%D\%%N.rar" "%%D\%%N"
      ENDLOCAL
    )
  )
)

The /AD开关DIR确保仅包含文件夹名称。

请注意,您可以以类似的方式生成密码。如果有一个命令接受输出文件名作为参数并且不间断地完成工作,则可以将该命令插入到DIR.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用密码对一组文件进行打包 (WinRAR) 的相关文章

  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 在 Cordova 中合并文件的多个部分

    在我的 Cordova 应用程序中 我正在下载任意文件 例如图像或视频文件 这是通过 Cordova 文件传输插件和 Range 标头完成的 因为我需要分段下载文件 我的问题是 我想将几 个小 字节 文件合并回原来的文件中 他们曾经在其中使
  • MS Batch:检查驱动器是否正在使用

    我需要检查驱动器 Z 是否正在使用 例如 正在由应用程序使用 已打开 我的批处理文件如下所示 Mount Z wait 15 minutes check if drive Z is in use IF NOT unmount Z ELSE
  • 如何使用批处理文件同时运行多个python脚本

    我有很多 python 脚本 通过单击它们单独运行每个脚本是一件痛苦的事情 如何制作一个批处理文件来一次运行它们 只需制作一个像这样的脚本作为每个任务的后台 在 Windows 上 start B python script1 py sta
  • 检查文件是否要上传?代码点火器

    我有一个带有很少输入和一个文件输入的表单 我想检查文件输入是否为空 如果为空则不要尝试上传 如果不是则尝试上传 我尝试过这样的事情 upld file this gt upload gt data if empty upld file Up
  • Python:使用Excel CSV文件仅读取某些列和行

    虽然我可以读取 csv 文件而不是读取整个文件 但如何仅打印某些行和列 想象一下这是 Excel A B C D E State Heart Disease Rate Stroke Death Rate HIV Diagnosis Rate
  • 通过套接字发送包含文件的字典(python)

    是否可以通过套接字发送包含文件 图像或文档 作为值的字典 我尝试了类似下面的东西 但失败了 with open cat jpeg rb as f myFile f read 2048 data id 1283 filename cat jp
  • 如何通过双击图标来执行JAVA程序?

    我写了一个java程序 现在我想在没有 IDE Eclipse 等的情况下打开我的控制台 java 应用程序 只需双击桌面上的可执行版本即可 我已将 java 项目导出为 Runnable JAR 文件 但无法打开 当我尝试使用cmd打开应
  • f.read 为空

    我在解释器中完成这一切 loc1 council council1 file1 open loc1 r 此时我可以执行 file1 read 并将文件的内容作为字符串打印到标准输出 但如果我添加这个 string1 file1 read 字
  • 用于删除扩展名为 .bak 的文件的批处理文件

    我想批量删除磁盘上各个文件夹中的所有文件 bakc 谁能帮我 ex all c del bak s a 谢谢 它可以是单个命令 del s q f c bak
  • 将 Django 的 FileField 设置为现有文件

    我在磁盘上有一个现有文件 例如 folder file txt 在 Django 中有一个 FileField 模型字段 当我做 instance field File file folder file txt instance save
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 来自 csv.read 模拟文件的 rspec 测试结果

    我正在使用 ruby 1 9 并且正在尝试执行 BDD 我的第一个测试 应该在 csv 中读取 有效 但第二个测试 我需要模拟文件对象 却不起作用 这是我的型号规格 require spec helper describe Person d
  • 将 numpy 数组及其大小写入二进制文件

    我需要将 2D numpy 数组写入文件 包括其尺寸 以便我可以从 C 程序中读取它并创建相应的数组 我编写了一些简单的代码来保存数组 并且可以从 C 读取它 但是如果我尝试先写入数组的大小 它总是会给我一个错误 这是我的简单 python
  • 从某个文件夹启动随机批处理文件

    问题是这样的 我有一个名为 abc 的文件夹 其中包含几个批处理文件 它们的命名如下 abc1 batabc2 batabc3 batabc4 bat 等等 我需要一个脚本 当我单击它时 它会随机启动其中一个批处理文件 我需要的脚本将存储在
  • 使用批处理文件挂载 .iso 文件 win windows 8 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个游戏 已备份到 iso 文件 笔记本电脑中的磁盘驱动器很吵 并且希望从单个快捷方式运行它 而不必每次都挂载 iso 文件 我运行
  • 将文件写入 Web 服务器 - ASP.NET

    我只想将 TextBox 控件的内容写入 Web 服务器目录根目录中的文件 如何指定它 请记住 我正在本地测试这个 它不断地将文件写入我的程序文件 Visual Studio Common IDE目录而不是我的项目目录 这是我假设Web服务
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include

随机推荐