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"