如何将存档从目录/子目录/*.* 提取到目录/%zipname%/



我有一堆想要提取的档案。问题是,它们有很多,而且有很多信息可以移动。我想一次完成所有操作。研究可能比手动花费更多的时间,但研究更有趣。

TL;DR:需要有关 7-zip 命令行的帮助,以将多个存档提取到它们自己的目录中。Autohotkey,Powershell和批处理文件的答案也会很好,如果你觉得特别有帮助。

Win10,最新更新等等。我一直在使用7-zip,所以如果有更好的提取器,这可能是一个有用的建议。我在编码方面有一点经验,所以我通常可以解析一个示例并将其应用于我的项目,但我不能自己想出代码。所以话虽如此,我很习惯使用cmdautohotkeypowershell批处理文件和其他一些文件,但我需要一个示例才能做任何事情。哈哈

所以,在我的研究中,我发现(7z x -o"...\Stellaris\mod\Examples\" "...\content\281990\*"(对于cmd,它有效,除了将所有内容提取到同一个目录,因为存档文件在根存档目录中(我认为这就是为什么;如果它们是一个文件夹,它应该像我想要的那样工作,对吗?我认为你不能在路径(?(中使用环境变量。不知道什么会让它在这里工作...

Powershell:我最近才开始修改它,所以我找到的一个脚本对我来说没有任何意义。并且从未发现有人为此使用AutoHotKey

最后,我在这里找到的**批处理文件*似乎最接近(通常我会对该线程发表评论,因为显然它仍然处于活动状态,但我没有 50 次(,但我不确定如何根据我的目的修改它:


@echo

设置"文件名=%~1"#Where does the working dir path go?

设置目录名称=%文件名:~0,-4%#How/where would you put in wildcards?

7z x -o"%dirName%" "%filename%">


我不介意使用任何方法,尽管我可能更喜欢AHK?我可能在那里最有经验。

如果你能走到这一步,哇,我印象深刻!我希望它足够连贯以理解(一开始可能不是?也许有点娱乐?我觉得我很有趣。让我知道我是否应该为将来添加或删除任何内容。我知道这可能是太多的背景,但我宁愿拥有太多也不愿不够,我永远不确定什么是相关的,什么不是。我对这里的代码格式不满意,但我不太明白帮助对空格的看法,而且我对 Markdown 还不够熟悉(我希望注释符合(。另外,老实说,我不确定标签。

编辑:添加了TL;DR在顶部,并且...

通过执行此操作的程序找到答案。我也会在答案中发布它:ExtractNow 似乎有点过时了,最后一次更新是在 17 年,但它做了我想要的。

对于命令提示符下的交互式使用:

for %z in ("pathtodirsubdir*.zip") do @echo 7z "-opathtoextracted%~nz" "%~z"

这不会运行 7z,但它会打印出命令。一旦您对打印的命令看起来正常感到满意,请删除@echo以执行它们。

在批处理脚本中,您当然必须复制%符号。

通过执行此操作的程序找到答案。ExtractNow 似乎有点过时了,上次更新是在 17 年,但它只做了一些设置更改就完成了我想要的效果。

所以,在我的研究中,我发现(7z x -o"...\Stellaris\mod\Examples" "...\content\281990\*"(对于cmd,它有效,除了将所有内容提取到相同的目录...

假设您使用的是Windows,那么7-zip可以正常工作,可以执行所需的操作。您唯一缺少的是*字符,当与-o开关一起使用时,7-zip 扩展为存档名称:

7z x "dirsubdir*.*"  -o"dir*"

所以7z x -o"...\Stellaris\mod\Examples" "...\content\281990\*">变成:


7z x -o"...StellarismodExamples*" "...content281990*"

另请注意,*.*并不意味着 7-zip 下的任何文件。 7-Zip 需要*.*作为任何具有扩展名的文件的名称。要处理所有文件,只需使用"dirsubdir*"而无需额外的.*

最新更新