每个档案的文本文件列表及其相对名称

每个档案的文本文件列表及其相对名称

要获取 .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”的档案生成文件列表,并且我想使用批处理,我该如何更改您的脚本? – 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 命令行中转义字符、分隔符和引号

相关内容