El trasfondo: estoy usando IFTTT para extraer los boletines de DC Metro de su fuente RSS a un archivo de texto para mi BBS. El mayor problema es que IFTTT no puede sobrescribir ni agregar archivos, por lo que obtengo varias copias de los archivos en el directorio:
red.txt
red (1).txt
red (2).txt
etcétera. Dejo la versión original (no) del archivo como marcador de posición y me concentro en fusionar los demás archivos a lo largo del día. Para un conjunto de archivos esto funciona:(x).txt
if exist "red (1).txt" for %%f in ("red (*.txt") do type "%%f" >> red_line.txt & del "%%f"
Dado que hay varios conjuntos de archivos (cada uno con un color o combinación de colores diferente), estoy intentando crear un bucle principal for
/ do
para recorrer las diferentes líneas de Metro (para que el código sea más fácil de mantener). Siempre podría agregar una nueva instancia de lo anterior para cada una de las líneas de Metro.
Creo que los paréntesis en los nombres de los archivos interfieren con los paréntesis en el bucle, porque se rompe inmediatamente. Debe haber una manera de escapar de los paréntesis, pero he probado con barras y signos de intercalación, etc.; nada parece funcionar. Espero que haya una mejor manera de hacer esto.
Esta es la base del código, sin la infinidad de cosas que ya he probado:
FOR %%A IN (red green orange red_orange) DO (
if exist "%%A (1).txt" for %%B in ("%%A (*.txt") do type "%%B" >> %%A_line.txt & del "%%B"
)
Este es un ejemplo de lo que obtengo:
C:\sbbs\Dropbox\bbs\ifttt>(if exist "red (1).txt" for %B in ("red (*.txt") do type "%B" 1>>red_line.txt & del "%B" )
C:\sbbs\Dropbox\bbs\ifttt>(if exist "green (1).txt" for %B in ("green (*.txt") do type "%B" 1>>green_line.txt & del "%B" )
C:\sbbs\Dropbox\bbs\ifttt>(if exist "orange (1).txt" for %B in ("orange (*.txt") do type "%B" 1>>orange_line.txt & del "%B" )
C:\sbbs\Dropbox\bbs\ifttt>(if exist "yellow (1).txt" for %B in ("red_orange (*.txt") do type "%B" 1>>red_orange_line.txt & del "%B" )
Esta es la parte del resultado que estoy viendo:
do type "%B" 1>>
Ese "1" debe ser del (1), ¿no?
También noto que mis espacios no se trasladan a los resultados:
do type "%B" 1>>orange_line.txt
Respuesta1
Haría esto en PowerShell en lugar de CMD. En PowerShell, cree un bucle externo para todas las carpetas, obtenga los archivos de cada carpeta como una matriz de objetos de archivo y luego no le importarán los nombres.
Combínelos en un archivo nuevo y elimine los archivos procesados, o muévalos a un archivo si los desea nuevamente.