【问题标题】:7-Zip Command-Line Help (Batch File)7-Zip 命令行帮助(批处理文件)
【发布时间】:2014-07-08 19:29:55
【问题描述】:

我需要从一个批处理文件运行 7-Zip 并执行一些任务,我想知道这是否可能。这是我的情况:

我有一个文件夹“X:/Archived Backups/”,其中包含存档和带有存档的子目录。

其中一些档案还包含更多档案。

我需要递归扫描目录和子目录以及 7-Zip 以将每个存档提取到同名(存档名称)的文件夹中。

我还需要它来提取档案内档案内的档案等。

最后,我需要它在提取时删除档案(这包括档案中的档案)并且只保留提取的文件夹。

这可能吗?如果是这样,可以从命令行吗?我该怎么做?

非常感谢 :)

【问题讨论】:

  • 答案很大程度上取决于您使用的外壳。是哪一个?
  • @jlahd with x: 作为驱动器号,那么它必须是 Windows。
  • @foxidrive Windows 是操作系统,而不是外壳。我有点希望提问者不限于cmd.exe,不幸的是,这是 Windows 的默认 shell。
  • 是的 Windows。我整理好了感谢您的回复。

标签: shell batch-file command-line command-line-arguments 7zip


【解决方案1】:

对此进行测试,看看它是否满足您的需求 - 它应该将它们提取到 x:\extracted\path\filename 文件夹中。

它不会删除存档,因为您必须先对此进行测试。

首先检查7z.exe的路径。

@echo off
set "location=x:\extracted"
md "%location%" 2>nul
for /r "X:\Archived Backups" %%a in (*.7z) do (
   md "%location%\%%~pna"
      pushd "%location%\%%~pna" && ("c:\program files\7-zip\7z.exe" x "%%a" & popd)
)
pause

【讨论】:

  • 至于删除部分,我使用del /S /F *.zip *.7z *.rar等删除档案。然后我用for /f "usebackq delims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d" 删除了所有空目录
  • 您是否也在我的脚本中使用了*.zip *.7z *.rar
【解决方案2】:

您可以使用this postthis 作为起点。

对于迭代和测试目录:

FOR %%i IN (%VAR%) DO IF EXIST %%~si\NUL ECHO It's a directory

对于文件,检查文件扩展名并使用 7-zip 命令解压:

【讨论】:

  • 感谢您的回复。我把它整理好了:)
猜你喜欢
  • 2011-03-09
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多