Shell 7-Zip命令行帮助(批处理文件)

Shell 7-Zip命令行帮助(批处理文件),shell,batch-file,command-line,command-line-arguments,7zip,Shell,Batch File,Command Line,Command Line Arguments,7zip,我需要从批处理文件运行7-Zip并执行一些任务,我想知道这是否可能。以下是我的情况: 我有一个文件夹“X:/Archived Backups/”,其中包含归档文件和包含归档文件的子目录 其中一些档案还包含进一步的档案 我需要递归地扫描目录和子目录,并使用7-Zip将每个归档文件以相同的名称(归档文件名称)解压缩到一个文件夹中 我还需要它来提取档案中的档案中的档案等 最后,我需要它在解压缩时删除归档文件(包括归档文件中的归档文件),只保留解压缩的文件夹 这可能吗?如果可以,可以从命令行执行吗?我该

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

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

其中一些档案还包含进一步的档案

我需要递归地扫描目录和子目录,并使用7-Zip将每个归档文件以相同的名称(归档文件名称)解压缩到一个文件夹中

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

最后,我需要它在解压缩时删除归档文件(包括归档文件中的归档文件),只保留解压缩的文件夹

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

非常感谢 :)

您可以使用和作为起点

对于迭代和测试目录:

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

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

测试它是否满足您的需要-它应该将文件解压缩到
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

答案在很大程度上取决于您使用的外壳。它是哪一个?@jlahd加上x:作为驱动器号,那么它必须是Windows。@foxidrive Windows是一个操作系统,而不是外壳。我有点希望asker不局限于
cmd.exe
,不幸的是这是Windows的默认shell。是的Windows。我把它整理好了。感谢您的回复。至于删除部分,我使用了
del/S/F*.zip*.7z*.rar
等方法来删除归档文件。然后我用
删除了所有空目录,其中/f“usebackq delims=“%%d in(
”dir/ad/b/s | sort/R“
)do rd“%%d”
您在我的脚本中也使用了
*.zip*.7z*.rar吗?谢谢您的回复。我把它整理好了:)