windows csv batch-file text fixed-width

Windows Batch script*(star) leer como texto?



csv batch-file (1)

for /f espera un solo nombre de archivo y no es capaz de usar comodines. Use otra llanura for alrededor:

for %%X in (HRV*.txt) do ( for /F "tokens=*" %%A in (%%X) do ( ... etc. etc. ) )

por cierto: tu forma de redirigir es muy lenta. El archivo de destino se abre, se escribe una línea y el archivo se cierra nuevamente. Abrir y cerrar un archivo lleva mucho tiempo. Puede evitarlo abriéndolo y cerrándolo solo una vez. En lugar de:

for /l %%a in (1,1,10000) do ( echo something>>file.txt )

que necesita unos 27 segundos, hazlo:

( for /l %%a in (1,1,10000) do ( echo something ) )>file.txt

que necesita alrededor de 170 ms . (Ymmv - veces depende de su sistema informático)

Estoy escribiendo un script por lotes para convertir un archivo de texto de ancho fijo al formato .csv. Esto es lo que he escrito hasta ahora:

@echo off setlocal enabledelayedexpansion for /F "tokens=*" %%A in (HRV*.txt) do ( set var=%%A set mer=!var:~6,11! set cr=!var:~18,19! set dt=!var:~42,30! set aa=!var:~72,30! set ab=!var:~102,30! set ac=!var:~132,15! set ad=!var:~147,30! set ae=!var:~177,30! set af=!var:~283,36! set ag=!var:~318,3! set ah=!var:~329,7! set ai=!var:~337,17! set aj=!var:~442,2! set ak=!var:~460,15! set al=!var:~475,2! set am=!var:~482,15! set y=!mer!.!cr!,"!dt!","!aa!","!ab!","!ac!","!ad!","!ae!",="!af!","!ag!",="ah","ai","aj",="ak","al",="am" echo !y!>> converted.csv ) pause

El problema es que cuando lo ejecuto, el programa no se completa y muestra "El sistema no puede encontrar el archivo HRV * .txt". Luego cambié de bucle a

for /F "tokens=*" %%A in (*.txt) do ( ...

Pero el error simplemente cambió a "El sistema no puede encontrar el archivo * .txt"

Parece que la estrella * se lee como texto? ¿Tiene esto algo que ver con "tokens + *"? ¿Cómo puedo hacerlo para que la secuencia de comandos se ejecute en cualquier archivo que comience con HRV?