每個存檔的文字檔案清單以及相對名稱

每個存檔的文字檔案清單以及相對名稱

要取得 .rar 存檔內的檔案列表,我可以使用此批次

@(for /R "%UserProfile%\Desktop\test winrar" %%I in (*.rar) do @"%ProgramFiles%\WinRAR\UnRAR.exe" lb "%%I")>files.txt

但我想要另一件事:為每個 .rar 存檔建立一個文字列表文件,而不僅僅是為所有存檔建立一個文字文件列表。不,對於每個存檔,一個文件
我有很多存檔,在我的批處理中我創建了一個文本文件,但我想為每個具有相對名稱的存檔創建一個文本文件列表。

name1.rar => name1.txt
name2.rar => name2.txt
name3.rar => name3.txt
...

相反,我的腳本僅創建一個文件列表,這對我來說沒有用

答案1

透過最少的編輯,您可以獲得以下結果:

@(for /R "%UserProfile%\Desktop\test winrar" %%I in (*.rar)do @"%ProgramFiles%\WinRAR\UnRAR.exe" lb "%%I">"%%~nI.txt" & type "%%~nI.txt">>Files.txt)

rem :: or....

@(for /R "%UserProfile%\Desktop\test winrar" %%I in (*.rar)do @"%ProgramFiles%\WinRAR\UnRAR.exe" lb "%%~I">"%%~nI.txt" & type "%%~nI.txt")>Files.txt

你的腳本有效,謝謝。最後一件事是:如果我只想為特定存檔生成>文件列表,例如僅為名為“11eyes Music Collection (FLAC).rar”的存檔,並且我想使用批處理,我該如何更改>你的劇本? – 傑克 41


  • 如果您只需"11eyes Music Collection (FLAC).rar"爭用下列內容Files.txt
@echo off && cd /d "%~dp0" 

set "_path=%UserProfile%\Desktop\test"
set "_wRar="%ProgramFiles%\WinRAR\UnRAR.exe""
set "_File=11eyes Music Collection (FLAC).rar"

for /f eol^=^|^tokens^=*delims^=^  %%i in ('
%__AppDir__%where.exe /R "%_path%" "%_File%"
    ')do %_WRar% lb "%%~i" >"%~dp0%%~ni.txt"
  • 如果您需要"11eyes Music Collection (FLAC).rar"從以下內容中排除競爭Files.txt
@echo off && cd /d "%~dp0"

set "_File=1eyes Music Collection (FLAC).rar"
set "_path=%UserProfile%\Desktop\test winrar"
set "_wRar="%ProgramFiles%\WinRAR\UnRAR.exe""

>.\Files.txt (for /R "%_path%" %%I in (*.rar
)do if /i "%_File%"=="%%~nxI" > "%%~nI.txt"(
  %_WRar% lb "%%~I") else %_WRar% lb "%%~I")
  • 如果您需要文件的單獨清單"11eyes Music Collection (FLAC).rar"但未包含在Files.txt
@echo off && cd /d "%~dp0"

set "_File=1eyes Music Collection (FLAC).rar"
set "_path=%UserProfile%\Desktop\test winrar"
set "_wRar="%ProgramFiles%\WinRAR\UnRAR.exe""

     >.\Files.txt (for /R "%_path%" %%I in (
       *.rar) do if /i "%_File%"=="%%~nxI" (
         %_WRar% lb "%%~I" >"%%~nI.txt" && (
           %_WRar% lb "%%~I")) else ^< nul ^
             %_WRar% lb "%%~I") && goto :eof
  • 如果您想透過以下方式取得文件列表拖放或者argument:
@echo off && cd /d "%~dp0"

<con: "%ProgramFiles%\WinRAR\UnRAR.exe" lb "%~dpnx1" >"%~dp0%~n1.txt"

Windows命令解釋器cmd.exe如何解析腳本

操作方法:在 Windows 命令列中轉義字元、分隔符號和引號

相關內容