【问题标题】:How to extract archives from dir/subdir/*.* to dir/%zipname%/如何将档案从 dir/subdir/*.* 提取到 dir/%zipname%/
【发布时间】:2020-02-05 03:14:57
【问题描述】:

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

TL;DR: 需要 7-zip 命令行的帮助,将多个档案解压到他们自己的目录中。如果您觉得更有帮助,Autohotkey、Powershell 和批处理文件的答案也会很好。

Win10,最新更新等等。我一直在使用 7-zip,所以如果有更好的提取器,这可能是一个有用的建议。我对编码有一点经验,所以我通常可以解析一个示例并将其应用到我的项目中,但我无法自己编写代码。话虽如此,我对使用 cmdautohotkeypowershellbatch files 和一些其他人,但我需要一个例子才能做任何事情。哈哈

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

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

最后一个**批处理文件*我发现here 似乎最接近(通常我会评论该线程,因为它显然仍然处于活动状态,但我没有 50 个代表),但我没有确定如何为我的目的修改它:


@echo 关闭

SET "filename=%~1" #Where does the working dir path go?

SET dirName=%filename:~0,-4% #How/where would you put in wildcards?

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


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

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

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

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

【问题讨论】:

标签: powershell batch-file cmd archive 7zip


【解决方案1】:

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

假设您使用的是 Windows,7-zip 可以很好地满足您的需求。您唯一缺少的是* 字符,当与-o 开关一起使用时,7-zip 将其扩展为存档名称:

 7z x "dir\subdir\*.*"  -o"dir\*"

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


7z x -o"...\Stellaris\mod\Examples\*" "...\content\281990\*"

还要注意*.* 确实不是 表示 7-zip 下的任何文件。 7-Zip 将*.* 用作任何具有扩展名的文件的名称。要处理所有文件,只需使用 "dir\subdir\*" 而不使用额外的 .*

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在命令提示符下进行交互使用:

      for %z in ("\path\to\dir\subdir\*.zip") do @echo 7z "-o\path\to\extracted\%~nz" "%~z"
      

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

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

      【讨论】:

        猜你喜欢
        • 2018-07-23
        • 1970-01-01
        • 2015-01-05
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        相关资源
        最近更新 更多