3.5k Aufrufe
Gefragt in Windows 7 von smbbln24 Mitglied (295 Punkte)
Hallo zusammen,

ich habe eine batch, welche einen relativ individuellen Kopiervorgang ermöglicht. Dieser sieht momentan so aus:

0@ECHO OFF & setlocal
ECHO OFF
COLOR 2F
CLS


ECHO Bitte folgende Angaben vornehmen ...

ECHO OFF
REM Set /P Quelllaufwerk="Bitte den Laufwerksbuchstaben des Quelllaufwerkes angeben:--> "
REM ECHO..............................................................................
REM Set /P Ziellaufwerk="Bitte den Laufwerksbuchstaben des Ziellaufwerkes angeben:--> "
REM ECHO..............................................................................
REM Set /P Zielverzeichniss="Name des Zielverzeichniss?-->"

ECHO..............................................................................
Set /P Quelllaufwerk="Bitte den Laufwerksbuchstaben des Quelllaufwerkes angeben:--> "
ECHO..............................................................................
Set /P Ziellaufwerk="Bitte den Laufwerksbuchstaben des Ziellaufwerkes angeben:--> "
ECHO..............................................................................
Set /P Quellverzeichniss="Name des Quellverzeichniss?-->"
ECHO..............................................................................
Set /P TitelID="TitelID angeben?-->"
ECHO..............................................................................
Set /P Dateityp="Bitte den Dateityp (Bsp: *.jpg) eingeben --> "
ECHO..............................................................................
ECHO KOPIERVORGANG STARTET
ECHO...

D:
cd test
mkdir %TitelID%
icacls "%Ziellaufwerk%:\test\%TitelID%" /inheritance:r /grant:r jeder:f system:f Administrator:f
copy "%Quelllaufwerk%:\%Quellverzeichniss%\%Dateityp%" "%Ziellaufwerk%:\test\%TitelID%" >> logfile.txt

ECHO.
ECHO Die Datenuebertragung wurde abgeschlossen ...

PAUSE

REM -------------------------- E O F ---------------------------

Fragt also nach einem Quelllaufwerk, Ziellaufwerk und Quellverzeichniss und packt es hier in dem Beispiel dann in einen festgelegten Testordner.

Meine Frage:

Wie ist es möglich, oder ist es überhaupt möglich, mehrere Zielverzeichnisse anzugeben, bevor die batch in den Copy Befehl läuft?

Ich müsste ja auf jeden Fall eine IF Bedingung setzen um eine Abruchbedingung zu schaffen. Dementsprechend muss ich natürlich auch eine Variable setzen. Mit der Frage: Willst du aus mehreren Verzeichnissen kopieren, wenn ja wie viele" oder so ähnlich.

Wenn ich es richtig gesehen habe könnte ich doch eventuell mit Sprungmarken via IF und GoTo arbeiten.
Das Problem was ich sehe, ist, dass ich vorher ja schlecht mehrere Zielverzeichnisse speichern kann, da die Variable Zielverzeichniss ja jedesmal überschrieben werden würde.

Hat irgendwer einen Gedankenanstoss den ich gerade nicht sehe?

Danke euch

12 Antworten

0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
«unleserlich» meint, dass es hier im Forum schlecht lesbar ist was dessen Darstellungsfähigkeiten angeht.

Die Bedienung, d.h. der regelmäßige Umgang, damit (Ergonomie) ist in der Tat meine Hauptsorge. Und das auch aus Erfahrungen im Beruf mit schrottiger Bedienung die nach einigen Krämpfen auf Umwegen überhaupt zu benutzbaren Resultaten führten.

Nehmen wir nur mal die Frage aus wie vielen Verzeichnissen kopiert werden soll, aus 5 von 20. Wo erfährt das System welche 5 das sind? Was mache ich wenn ich aus 7,8,12,13 und 17 kopieren wollte?
Oder definiert Ort (Verzeichnis) Nummer 6 nicht auch ein Laufwerk gleich mit?

Gut, etwas zu bauen das eine LW-Buchstaben übernimmt , eine einzelne laufende Nummer (was war doch gleich noch mal Nummer 9??) und ggf. noch die obsolete Dateiauswahl, das wäre nicht weiter schwer. Wie ist das Ziel organisiert? Ein einziges Laufwerk in dem Ordner je Quelllaufwerk vorliegen ein die dann kopiert wird (wobei am Ziel immer ersetzt wird?!)

Nach den SET /P muss eine Sprungtabelle folgen die z.B. Pfandangaben an Variablen gibt und von da aus zur Exekutivzeile weiterspringt.
Rufe ich das nicht per Link auf der gleich eine CMD-Box öffnet sähe mein Vorgehen natürlich so aus auf SET /P zu verzichten und das nur über Kommandozeilenparameter laufen zu lassen :-)

Ich halte es für ein Überdehnen von Batch wenn ich noch zusätzlich ganze Verzeichnisse als Eingabe übernehmen und auf Fehler kontrollieren wollte.
Das Sprungtabellensystem das ich beschrieben habe mag realisierbar sein.

Eric March

PS: wozu ist da eigentlich der ICACLS nötig? Ich meine; weswegen sollte ich da nicht direkt Rechte besitzen?!
0 Punkte
Beantwortet von smbbln24 Mitglied (295 Punkte)
Darf ich mich später nochmal ausführlich melden?

Das ICACLS war in der Tat nötig. Aus irgendwelchen gründen wurden die Benutzerrechte nie richtig gesetzt. Deshalb musste ich da nochmal mit ICACLS nachwirken.

Auf jeden Fall danke für die Antworten Eric.

Bis später
...