maniacsurvivor
Goto Top

Verzeichnisse mit Inhalt kopieren-pfad mit Variable füllen

Sehr geehrte Mittglieder von administrator.de

Ich bin neu im Forum und ich habe ein Problem mit Batch, dass ich nicht lösen kann.
Hoffentlich könnt ihr mir helfen.

Gerne möchte ich aus mehren Verzeichnissen einen bestimmten Ordner kopieren und dessen Struktur übernehmen.
Das Problem ist folgendes:.. /ordner/1/meinziel
../ordner/2/meinziel
../ordner/3/meinziel

Ich möchte gerne aus den Verzeichnissen 1,2,3 usw. den Ordner meinziel kopieren. In den Verzeichnissen 1,2,3 usw. gibt es aber nicht nur den Ordner mein Ziel,
sondern auch noch andere Inhalte, ansonsten hätte ich einfach alles nach /ordner/ kopieren können.

In der Batch kann ich nicht einfach ../ordner/1/meinziel schreiben, denn der Inhalt unter /ordner/ wird ständig aktualisiert bzw. erneuert.
Deshalb muss 1,2,3 usw. in eine Variable schreiben. Der Inhalt der Variable sollte aus einer Textdatei genommen werden, in der die Verzeichnisse
1,2,3 usw. untereinander stehen, wenn ich die .txt öffne siehte es so aus:1
2
3

Diese .txt erstelle ich automatisch im Batch-File und lösche es später wieder.

Nun sollten alle Inhalte kopiert werden in folgender Form: .../ordner/%variable%/meinziel nach ;;;/ordner/%variable%/meinziel
Die Variable sollte hochgezählt werden bis es nach1,2,3... nicht mehr gibt.

Bis Jetzt habe ich folgendes(das meiste habe ich auskomentiert, habe ein grosses Durcheinander):


@echo OFF
REM Ein Script, dass Dateien aus dem Kundenverzeichnissen kopiert.

REM Eine Liste wird erstellt mit allen Kundenordner
cd C:\Users\pm.HRMS\Desktop\Test\von\
dir /b > C:\Users\pm.HRMS\Desktop\Test\infos.txt

REM Variable kundenname wird hier gesetzt
REM set var_token=1
REM FOR /F " tokens=%var_token% delims=" %%i in (C:\Users\pm.HRMS\Desktop\Test\infos.txt) do (
REM set var_kundenname=%%i
REM )
REM echo %var_kundenname%

REM Die Anzahl der gesamten Zeilen aus infos.txt wird ermittelt und in der Variable %Anzahl% gespeichert
::for /f "delims=:" %%a in ('findstr . infos.txt^|findstr /n "^"') do set /a Anzahl=%%a

REM Mit findstr finde ich eine bestimmte Zeile Heraus, diese sollte dann in eine Variable gespeichert werden.
REM Die Zahlen 1,2,6 werden noch durch Variablen ersetzt ( 1 = welche Zeile ; 2 = Grösse der Sprünge ; 6 = Anzahl der Zeilen )
REM echo %%j muss noch ersetzt werden ( Wert nur als Variable speichern )
::for /f "tokens=1,* delims=:" %%i in ('findstr /n $ C:\Users\pm.HRMS\Desktop\Test\infos.txt') do @(
::for /L %%a in (1,2,6 do @if %%i==%%a @echo %%j
REM )

REM keine Ahnung...habe ich kopiert
:: FOR /f %%f IN (C:\Users\pm.HRMS\Desktop\Test\infos.txt) DO echo %%f

REM start und ziel werden als Variable gespeichert, * muss noch durch Variable ersetzt werden
::SET start=C:\Users\pm.HRMS\Desktop\Test\von\*\VertraegeMandate\*
::SET ziel=C:\Users\pm.HRMS\Desktop\Test\nach\*\VertraegeMandate\

REM Der Copy Befehl findet hier statt
::xcopy "%start%" "%ziel%" /s/d/y

PAUSE


Bitte helft mir, ich bedanke mich schon im Vorhinein

Content-ID: 181592

Url: https://administrator.de/forum/verzeichnisse-mit-inhalt-kopieren-pfad-mit-variable-fuellen-181592.html

Ausgedruckt am: 22.04.2025 um 22:04 Uhr

bastla
bastla 07.03.2012 um 15:49:20 Uhr
Goto Top
Hallo Lunalumen und willkommen im Forum!

Wenn Du, wie ich es interpretiere, ja eigentlich nur eine "Parallel-Struktur" für die "VertraegeMandate"-Ordner erstellen willst, könnte das (ungetestet) etwa so gehen:
@echo off & setlocal
set "Quelle=C:\Users\pm.HRMS\Desktop\Test\von"  
set "Ziel=C:\Users\pm.HRMS\Desktop\Test\nach"  
set "Ordner=VertraegeMandate"  

for /d %%i in ("%Quelle%\*") do if exist "%%i\%Ordner%" xcopy /sdy "%%i\%Ordner%" "%Ziel%\%%~nxi\%Ordner%\" >nul  
Grüße
bastla
Maniacsurvivor
Maniacsurvivor 07.03.2012 um 15:56:32 Uhr
Goto Top
WOW hat super funktioniert, vielen Dank
60730
60730 07.03.2012 um 19:45:35 Uhr
Goto Top
Serus und auch von mir ein "fühl dich hier wohl"

Zitat von @Maniacsurvivor:
WOW hat super funktioniert, vielen Dank

Kann dann dieser Wie kann ich einen Beitrag als gelöst markieren? dran?

Ps: @echo OFF &
und ich habe ein Problem mit Batch, dass ich nicht lösen kann
  • sind zwei Sachen, die wir hier wirklich zu oft lesen dürfen.
Der "einzige", der hier ungestraft €cho off Batche schreiben darf ist der werte Bastla, denn der hat kein Probleme mit Batchenface-wink