programacion ejemplos batch bat archivos windows batch-file string-concatenation

windows - batch - archivos bat ejemplos



¿Cómo concatenar cadenas en un archivo por lotes de Windows? (3)

Tengo un directorio para el cual quiero enumerar todos los archivos .doc con un ; .

Sé que el siguiente comando de lote echos todos los archivos:

for /r %%i In (*.doc) DO echo %%i

Pero ahora quiero ponerlos todos en una variable, agregar un ; en el medio y repetirlos todos a la vez.
¿Cómo puedo hacer eso?

set myvar="the list: " for /r %%i In (*.doc) DO <what?> echo %myvar%


En función de la solución de Rubens, debe habilitar la expansión retrasada de variables env (escriba "help setlocal" o "help cmd") para que la var se evalúe correctamente en el ciclo:

@echo off setlocal enabledelayedexpansion set myvar=the list: for /r %%i In (*.sql) DO set myvar=!myvar! %%i, echo %myvar%

Considere también la siguiente restricción ( MSDN ):

El tamaño máximo de variable de entorno individual es de 8192 bytes.


Qué pasa:

@echo off set myvar="the list: " for /r %%i in (*.doc) DO call :concat %%i echo %myvar% goto :eof :concat set myvar=%myvar% %1; goto :eof


Tenga en cuenta que las variables @fname o @ext pueden simplemente concatenarse. Esta:

forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"

cambia el nombre de todos los archivos PDF a "filename_old.pdf"