powershell - 如何将档案从 dir/subdir/*.* 提取到 dir/%zipname%/
问题描述
我有一堆要提取的档案。问题是,它们有很多,而且有很多信息要四处走动。我想一次性完成。研究可能比手动完成要花费更多的时间,但研究更有趣。
TL;DR: 需要 7-zip 命令行的帮助,将多个档案解压到他们自己的目录中。如果您觉得更有帮助,Autohotkey、Powershell 和批处理文件的答案也会很好。
Win10,最新更新等等。我一直在使用7-zip,所以如果有更好的提取器,这可能是一个有用的建议。我有一点编码经验,所以我通常可以解析一个示例并将其应用到我的项目中,但我无法自己编写代码。话虽如此,我很乐意使用cmd、autohotkey、powershell、batch files和其他一些工具,但我需要一个示例才能做任何事情。哈哈
因此,在我的研究中,我发现 cmd的(7z x -o"...\Stellaris\mod\Examples\" "...\content\281990\*") 有效,除了将所有内容提取到相同dir 因为存档文件位于根存档目录中(我认为这就是原因;如果它们是一个文件夹,它应该像我想要的那样工作,对吧?)。我认为您不能在路径中使用环境变量(?)。不知道什么会让它在这里工作......
Powershell:我最近才开始修改它,所以我发现的一个脚本对我来说没有任何意义。并且从未发现有人为此使用AutoHotKey 。
最后,我在这里找到的**批处理文件*似乎最接近(通常我会评论那个线程,因为它显然仍然处于活动状态,但我没有 50 个代表),但我不知道如何修改它出于我的目的:
@echo 关闭
SET "文件名=%~1" #Where does the working dir path go?
SET dirName=%文件名:~0,-4%#How/where would you put in wildcards?
7z x -o"%dirName%" "%filename%"
我不介意使用任何方法,尽管我可能更喜欢AHK?我可能在那里最有经验。
如果你能做到这一点,哇,我印象深刻!我希望它足够连贯,可以理解(一开始可能不是?)。也许有点有趣?我觉得我很有趣。让我知道我是否应该为将来添加或删除任何内容。我知道这可能是太多的上下文,但我宁愿有太多也不愿不够,而且我永远不确定什么是相关的,什么不相关。我对这里的代码格式不满意,但我不太明白帮助中关于空格的含义,而且我对 Markdown 还不够熟悉(我希望注释符合要求)。另外,老实说,我不确定标签。
编辑:在顶部添加了 TL;DR,并且...
通过执行此操作的程序找到了答案。我也会在答案中发布它:ExtractNow似乎有点过时了,最后一次更新是在 17 年,但它做了我想要的。
解决方案
在命令提示符下进行交互式使用:
for %z in ("\path\to\dir\subdir\*.zip") do @echo 7z "-o\path\to\extracted\%~nz" "%~z"
这不会运行 7z,但会打印出命令。一旦您对打印的命令看起来不错感到满意,请删除@echo
以执行它们。
在批处理脚本中,您当然必须复制这些%
标志。
推荐阅读
- ruby-on-rails - Rails activeadmin 导出 PDF
- git - 当我克隆按钮单击时括号 Git 错误
- reporting-services - web.config 中的 Vuejs 和 SSRS 报告连接
- python - 性能 - 在 Python 中比较 2 个大型字符串列表的最快方法
- javascript - 在常规 html 页面中使用 vue-multiselect.js
- wordpress - 如果 WordPress 类别为空,如何显示一行文本?
- r - order 函数如何打破 R 中的关系?
- xamarin.forms - Xamarin 跨平台蓝牙连接示例代码
- ruby - OpenSSL::X509::CertificateError:嵌套 asn1 错误
- angularjs - 使用Springboot从angularjs上传图像到FTP