Wie kann ich aus einer einzelnen Datei mehrere Dateien in mehreren Verzeichnissen erstellen?

Wie kann ich aus einer einzelnen Datei mehrere Dateien in mehreren Verzeichnissen erstellen?

Hallo, ich versuche, mehrere Kopien einer einzelnen Datei in mehreren Verzeichnissen zu erstellen?

Ich habe beispielsweise 6 Ordner mit jeweils einer einzelnen Datei namens lp.html. Wie kann ich eine Stapelverarbeitung ausführen, um in jedem Verzeichnis 100 Kopien dieser Dateien zu erstellen?

Der Code, den ich habe, erstellt mehrere Kopien, aber ich muss es einzeln machen, und wenn ich über 100 Ordner zu bearbeiten habe, wird es mühsam.

Wie kann ich diese Batchdatei also so einrichten, dass sie das tut, was ich erreichen möchte? [Ich verwende Windows 7]

HINZUFÜGTE INFORMATIONEN: Alle Ordner befinden sich im selben übergeordneten Ordner, die Dateien in den Ordnern unterscheiden sich voneinander

   @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

Antwort1

Verwenden Sie den Befehl forfiles. Führen Sie forfiles /? aus, um Hilfe zu erhalten.

Wenn Sie die Kopien parallel verarbeiten möchten, können Sie sechs verschiedene Skripte erstellen, eines für jedes Verzeichnis, und sie dann alle von einem einzigen Skript aus ausführen, start scriptname.batdas nicht wie dieses auf einen Rückgabewert wartet call.

Antwort2

Versuchen Sie dies. Es sieht nicht schön aus, weil dieser *$#?-Editor die Einrückungen, Zeilenumbrüche usw. verloren hat.

--- ÜBERARBEITETES SKRIPT

@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

verwandte Informationen