¿Cómo puedo crear varios archivos de un solo archivo en varios directorios?

¿Cómo puedo crear varios archivos de un solo archivo en varios directorios?

Hola, ¿estoy intentando crear varias copias de un solo archivo en varios directorios?

por ejemplo, tengo 6 carpetas con un solo archivo en cada carpeta llamado lp.html. ¿Cómo puedo ejecutar un lote para crear 100 copias de dichos archivos en cada directorio?

El código que tengo crea varias copias, pero tengo que hacerlo una por una y se vuelve tedioso cuando tengo más de 100 carpetas que hacer.

Entonces, ¿cómo puedo convertir este archivo por lotes para hacer lo que estoy tratando de lograr? [Estoy ejecutando Windows 7]

INFORMACIÓN AÑADIDA: Todas las carpetas están en la misma carpeta principal, los archivos de las carpetas son diferentes entre sí

   @echo off

   for /L %%i IN (1,1,100) do call :docopy %%i
   goto end

   :docopy
   set FN=00%1
   set FN=%FN:~-3%

   copy source-file.html poll%FN%.html

   :end

Respuesta1

Utilice el comando forfiles. Ejecutar archivos /? por ayuda.

Si le preocupa procesar las copias en paralelo, puede crear 6 scripts diferentes, uno para cada directorio, y luego ejecutarlos todos desde un único script que start scriptname.batno esperará un valor de retorno como calllo hace.

Respuesta2

Prueba esto. No es bonito, ¿porque esto *$#? El editor ha perdido la sangría, los saltos de línea, etc.

--- GUIÓN REVISADO

@echo off

setlocal

set ROOT_DIR=c:\temp\test

for /f "tokens=*" %%D in ('dir /ad /b "%ROOT_DIR%"') do call :PROCESS_DIR "%ROOT_DIR%" "%%D"

endlocal

goto END


:PROCESS_DIR

set PD_ROOT=%1
set PD_ROOT=%PD_ROOT:"=%
set PD_DIR=%2
set PD_DIR=%PD_DIR:"=%
set PD_FIRST_FILE=
set PD_SOURCE_FILE=

REM ***
REM *** GET THE NAME OF THE FIRST FILE IN THIS FOLDER.
REM ***
for /f "tokens=*" %%F in ('dir /o-n /b "%PD_ROOT%\%PD_DIR%"') do set PD_FIRST_FILE=%%F

if "%PD_FIRST_FILE%" == "" (
    echo WARNING : No files found in [%PD_DIR%] - skipping.
    goto END
    )

set PD_SOURCE_FILE=%PD_ROOT%\%PD_DIR%\%PD_FIRST_FILE%

REM ***
REM *** CREATE FILES.
REM ***
for /l %%I in (1,1,100) do call :CREATE_FILE_COPY "%PD_ROOT%\%PD_DIR%" "%PD_SOURCE_FILE%" 00%%I

goto END

:CREATE_FILE_COPY

set CFP_DIR=%1
set CFP_DIR=%CFP_DIR:"=%
set CFP_FILE=%2
set CFP_INDEX=%3
set CFP_FILE_NO_EXT=

REM ***
REM *** GET FILE NAME WITHOUT EXTENSION.
REM ***
for /f %%F in ("%CFP_FILE%") do set CFP_FILE_NO_EXT=%%~nF

REM ***
REM *** COPY THE FILE.
REM ***
copy /y %CFP_FILE% "%CFP_DIR%\%CFP_FILE_NO_EXT%.%CFP_INDEX:~-3%

goto END


:END

información relacionada