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

Archive files inside subfolder output name

“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
)