【问题标题】:batch: create relative folders based on archives name and only then extract multiple .rar archives in their respective folder批处理:根据档案名称创建相关文件夹,然后在各自的文件夹中提取多个 .rar 档案
【发布时间】:2021-02-25 02:43:04
【问题描述】:

我有这些 .rar/zip 压缩包到C:\test

test1.rar
test2.rar

test1.rar里面我没有文件夹,只有文件在test2.rar里面我还有一个文件夹 我尝试将每个 rar/zip 档案解压缩到相关文件夹中,并将档案内容放入 C:\test2
我想为相对文件夹名称使用相同的档案名称

test1 <-- in this folder there are only files because test1.rar had not folders within
test2 <-- content should extracted preserving structure folder inside archive
 

我使用的脚本是这样的

@echo off
set "SourceFolder=C:\test"
set "TargetFolder=C:\test2"
if not exist "%TargetFolder%" md "%TargetFolder%"
"C:\Program Files (x86)\WinRAR\Rar.exe" x -cfg- -idq -r -y "%SourceFolder%\*.rar" "%TargetFolder%"
del /F /Q /S "%SourceFolder%\*.rar">nul
for /D %%D in ("%SourceFolder%\*") do rd "%%D" 2>nul

但是这个脚本效果不好

  1. 提取此脚本后,从源文件夹中删除我的 .rar 档案,但我不想要这个
  2. 它不会创建test1 文件夹之前test1.rar 内容移动到test1 文件夹中。它只是提取内容

这是我预期的输出

C:\test2
   |
   |--- test1 [folder]
   |       |
   |       |--a.txt
   |       |--b.txt
   |
   |--- test2 [folder]
          |
          |--simple [folder]
          |     |
          |     |- c.txt
          |
          |-d.txt

但是我得到了这个糟糕的输出

C:\test2
   |
   |
   |--a.txt
   |--b.txt
   |--simple [folder]
          |     |
          |     |- c.txt
          |
          |-d.txt

【问题讨论】:

    标签: batch-processing winrar


    【解决方案1】:

    解决办法是这样的。感谢 @Mofi-ad 切换

    @echo off
    set "SourceFolder=C:\temp"
    set "TargetFolder=C:\temp2"
    if not exist "%TargetFolder%" md "%TargetFolder%"
    "C:\Program Files\WinRAR\Rar.exe" x -ad -cfg- -idq -r -y "%SourceFolder%\*.rar" "%TargetFolder%"
    
    for /D %%D in ("%SourceFolder%\*") do rd "%%D" 2>nul
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2016-09-11
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2018-10-29
      相关资源
      最近更新 更多