Como posso criar vários arquivos de um único arquivo em vários diretórios?

2

Olá, estou tentando criar várias cópias de um único arquivo em vários diretórios?

por exemplo, eu tenho 6 pastas com um único arquivo em cada pasta chamada lp.html, como posso executar um lote para criar 100 cópias dos arquivos mencionados em cada diretório.

O código que tenho cria várias cópias, mas eu tenho que fazer uma por uma e se torna tedioso quando eu tenho mais de 100 pastas para fazer.

Então, como posso ativar esse arquivo em lote para fazer o que estou tentando realizar. [Eu estou executando o Windows 7]

INFORMAÇÕES ADICIONADAS: Todas as pastas estão na mesma pasta pai, os arquivos nas pastas são diferentes uns dos outros

   @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
    
por Jesus Landra 30.08.2013 / 16:48

2 respostas

0

Use o comando forfiles. Executar forfiles /? para ajuda.

Se você estiver preocupado em processar as cópias em paralelo, poderá criar seis scripts diferentes, um para cada diretório, e depois executá-los a partir de um único script usando start scriptname.bat , que não esperará por um valor de retorno como call faz.

    
por 30.08.2013 / 23:30
0

Tente isso. Não é bonito, porque isso * $ #? editor perdeu o recuo, quebra de linha, Etc.

--- SCRIPT REVISTO

@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
    
por 30.08.2013 / 23:06