Eine Textdateiliste für jedes Archiv mit relativem Namen

Eine Textdateiliste für jedes Archiv mit relativem Namen

Um eine Liste der Dateien in einem .rar-Archiv zu erhalten, kann ich diesen Batch verwenden

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

Aber ich möchte noch etwas anderes: eine Textlistendatei für jedes .rar-Archiv erstellen und nicht nur eine einzige Textdateiliste für alle Archive. Nein, für jedes Archiv eine Datei.
Ich habe viele Archive, mit meinem Batch erstelle ich eine einzelne Textdatei, aber ich möchte für jedes Archiv eine Textdateiliste mit relativem Namen erstellen.

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

Stattdessen erstellt mein Skript nur eine einzelne Dateiliste und das ist für mich nicht nützlich

Antwort1

Mit minimaler Bearbeitung können Sie diese Ergebnisse erzielen:

@(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

Ihr Skript funktioniert, danke. Nur noch eine letzte Sache, wired: Wenn ich eine Dateiliste nur für ein bestimmtes Archiv generieren möchte, zum Beispiel nur für das Archiv namens „11eyes Music Collection (FLAC).rar“, und ich eine Stapelverarbeitung verwenden möchte, wie kann ich Ihr Skript ändern? – Jack 41


  • Wenn Sie nur "11eyes Music Collection (FLAC).rar"die in aufgeführten Inhalte benötigen 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"Wenn Sie Inhalte von Folgendem ausschließen müssen 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")
  • Wenn Sie eine separate Liste der Datei benötigen, die "11eyes Music Collection (FLAC).rar"aber nicht in enthalten ist 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
  • Wenn Sie eine Dateiliste erhalten möchten perZiehen und Ablegenoderargument:
@echo off && cd /d "%~dp0"

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

Wie analysiert der Windows-Eingabeaufforderungsinterpreter cmd.exe Skripte?

Anleitung: Escape-Zeichen, Trennzeichen und Anführungszeichen in der Windows-Befehlszeile

verwandte Informationen