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-Key: 181592

Url: https://administrator.de/contentid/181592

Printed on: April 25, 2024 at 14:04 o'clock

Member: bastla
bastla Mar 07, 2012 at 14:49:20 (UTC)
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
Member: Maniacsurvivor
Maniacsurvivor Mar 07, 2012 at 14:56:32 (UTC)
Goto Top
WOW hat super funktioniert, vielen Dank
Mitglied: 60730
60730 Mar 07, 2012 at 18:45:35 (UTC)
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 How can I mark a post as solved? 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