相対名を持つ各アーカイブのテキストファイルリスト

相対名を持つ各アーカイブのテキストファイルリスト

.rarアーカイブ内のファイルのリストを取得するには、このバッチを使用できます。

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

しかし、もう 1 つ欲しいことがあります。それは、すべてのアーカイブに対して 1 つのテキスト ファイル リストを作成するのではなく、各 .rar アーカイブに対してテキスト リスト ファイルを作成することです。いいえ、アーカイブごとに 1 つのファイルが
あり、アーカイブが多数あるため、バッチで 1 つのテキスト ファイルを作成しますが、相対名を持つ各アーカイブに対してテキスト ファイル リストを作成したいのです。

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

スクリプトはうまくいきました。ありがとうございます。最後にもう 1 つ質問があります。特定のアーカイブのみ、たとえば「11eyes Music Collection (FLAC).rar」というアーカイブのみのファイル リストを生成し、バッチを使用したい場合、スクリプトをどのように変更すればよいでしょうか。 – Jack 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 のコマンド ラインで文字、区切り文字、引用符をエスケープする方法

関連情報