Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch processing 批处理:根据归档文件名称创建相对文件夹,然后在各自的文件夹中提取多个.rar归档文件_Batch Processing_Winrar - Fatal编程技术网

Batch processing 批处理:根据归档文件名称创建相对文件夹,然后在各自的文件夹中提取多个.rar归档文件

Batch processing 批处理:根据归档文件名称创建相对文件夹,然后在各自的文件夹中提取多个.rar归档文件,batch-processing,winrar,Batch Processing,Winrar,我将这些.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

我将这些.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
 
但是这个脚本效果很差

  • 提取此脚本后,从源文件夹中删除我的.rar存档,但我不希望这样
  • 在移动
    test1.rar
    文件夹中的
    test1
    内容之前,它不会创建
    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
    

    解决办法就是这样。感谢@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
    
    @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