여러 디렉터리에 있는 단일 파일의 여러 파일을 어떻게 만들 수 있나요?

여러 디렉터리에 있는 단일 파일의 여러 파일을 어떻게 만들 수 있나요?

안녕하세요. 여러 디렉터리에 단일 파일의 여러 복사본을 만들려고 합니다.

예를 들어 각 폴더에 lp.html이라는 단일 파일이 포함된 6개의 폴더가 있습니다. 배치를 실행하여 각 디렉터리에 해당 파일의 100개 복사본을 생성하려면 어떻게 해야 합니까?

내가 가지고 있는 코드는 여러 개의 복사본을 생성하지만 하나씩 수행해야 하며 수행할 폴더가 100개가 넘으면 지루해집니다.

그러면 이 배치 파일을 내가 달성하려는 작업을 수행하도록 어떻게 바꿀 수 있습니까? [저는 Windows 7을 사용하고 있습니다.]

추가 정보: 모든 폴더는 동일한 상위 폴더에 있으며 폴더의 파일은 서로 다릅니다.

   @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

답변1

forfiles 명령을 사용하십시오. forfiles 실행 /? 도와주기 위해.

복사본을 병렬로 처리하는 것이 염려된다면 각 디렉터리마다 하나씩 6개의 서로 다른 스크립트를 만든 다음 start scriptname.bat반환 값을 기다리지 않는 단일 스크립트에서 모두 실행할 수 있습니다 call.

답변2

이 시도. 별로 안 예뻐요. 왜냐면 *$#? 편집자는 들여쓰기, 줄 바꿈 등을 잃었습니다.

--- 수정된 스크립트

@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

관련 정보