Una lista de archivos de texto para cada archivo con nombre relativo

Una lista de archivos de texto para cada archivo con nombre relativo

Para obtener una lista de archivos dentro de un archivo .rar, puedo usar este lote

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

Pero quiero otra cosa: crear un archivo de lista de texto para cada archivo .rar y no solo una lista de archivos de texto para todos los archivos. No, para cada archivo, un archivo.
Tengo muchos archivos, con mi lote creo un solo archivo de texto, pero quiero crear una lista de archivos de texto para cada archivo con un nombre relativo.

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

En cambio, mi secuencia de comandos crea solo una lista de archivos y esto no es útil para mí.

Respuesta1

Con una edición mínima puede obtener estos resultados:

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

Tu guión funciona, gracias. Sólo una última cosa: si quisiera generar una lista de archivos solo para un archivo en particular, por ejemplo, solo para un archivo llamado "11eyes Music Collection (FLAC).rar" y quiero usar un lote, ¿cómo puedo cambiarlo? tu guión? – Gato 41


  • Si solo necesita "11eyes Music Collection (FLAC).rar"competir listado en 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"
  • Si necesita excluir "11eyes Music Collection (FLAC).rar"la contienda de 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")
  • Si necesita una lista separada del archivo "11eyes Music Collection (FLAC).rar"pero no incluido en 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
  • Si desea obtener un listado de archivos porarrastrando y soltandooargument:
@echo off && cd /d "%~dp0"

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

¿Cómo analiza los scripts el intérprete de comandos de Windows cmd.exe?

Cómo hacerlo: Caracteres de escape, delimitadores y comillas en la línea de comando de Windows

información relacionada