子文件夹内的存档文件输出名称

问题描述

在“C:\Test”中有多个文件夹。在这文件夹中有文件。到目前为止,我能够制作批处理脚本的唯一问题是我想要基于子文件名称的存档名称。喜欢

"C:\Test\Abc" => "C:\Test\Abc\Abc.rar"

我设置了目录名称,但它使用根文件夹 Test.rar 作为所有存档名称。我尝试了其他变量,但没有奏效。这是批处理脚本,有什么帮助吗?

@echo off
for %%I in (.) do set CurrDirName=%%~nxI



FOR /D %%F IN ("C:\Test\*") DO (
    
    ECHO.
    ECHO Switching to folder '%%F'
    
 for %%a in ("%%F") do (
    pushd "%%~a"
    "C:\Program Files\WinRAR\rar.exe" -x*.txt a -r -- "%CurrDirName%.rar"
     RMDIR /s /q "%%s"
      )
    
    ECHO.
    
)

PAUSE

解决方法

也许最好先将文件夹更改为 c:\Test 然后在其中运行 for

cd test
for /d %%f in (*) do (
  pushd %%f
  "C:\Program Files\WinRAR\rar.exe" -x*.txt a -r -- "%%f.rar"
  popd
)