Batch Datei in Ordner mit automatisch erstelltem Ordner

kaschdewasser

Lt. Junior Grade
Registriert
Aug. 2005
Beiträge
273
Hi an alle,

ich bin neben meinem normalen "Job" auch ein wenig für die EDV in unserem kleinen Betrieb zuständig. Ich habe mir überlegt, ein Netzlaufwerk für alle Nutzer einzurichten, wo alle Projektrelevanten Ordner direkt verlinkt werden, sodass nicht jedes mal durch den kompletten Wirr-Warr auf den Netzlaufwerken geklickt werden muss.

Ich frage per Batch alle Projektrelevanten Daten ab, die da wären:
- Auftragsnummer
- Kundenname
- Maschinenbezeichnung
- Ex Zone

Jetzt möchte ich gerne eine Datei, die irgendwo auf dem Netzlaufwerk liegt, in den automatisch erstellten Ordner kopieren, da die Datei für jedes Projekt benötigt wird.
Hier einfach mal mein aktueller code. Wie müsste der Copy-Befehl richtig heißen? Problem ist, dass ich Leerzeichen in den Ordnern habe, die ich aber ungerne weglassen möchte.
Der Copybefehl funktioniert bis zu den Ordnern, die durch die Abfrage erstellt werden...

Evtl. weiß jemand weiter?

liebe Grüße


@echo off
echo Bitte Informationen eingeben:
set /p "Auftragsnummer=Auftragsnummer: "
set /p "Kundenname=Kundenname: "
set /p "Maschinenbezeichnung=Maschinenbezeichnung: "
set /p "Ex Zone=Ex Zone: "
//dient zum kopieren: mkdir d:\"%Auftragsnummer% ""%Kundenname% ""%Maschinenbezeichnung% ""%ex zone%"

//elektro
mkdir "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\"%Kundenname%"\%Auftragsnummer% ""%Maschinenbezeichnung% ""%Ex Zone%"
explorer.exe "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\"
copy U:\"Betriebsanleitungen, Dokumentationen"\"Elektro - Schaltplaene"\"listen vorlage.xls" U:\"Betriebsanleitungen, Dokumentationen"\"Elektro - Schaltplaene"\"%Kundenname%"\"%Auftragsnummer% ""%Maschinenbezeichnung% ""%Ex Zone%"\
@exit
 
Das ganze Verzeichnis einfach in "". Z.B. "C:\ordner mit vielen leerzeichen\datei mit vielen leerzeichen.dat"
 
kaikuwe schrieb:
Das ganze Verzeichnis einfach in "". Z.B. "C:\ordner mit vielen leerzeichen\datei mit vielen leerzeichen.dat"

funktioniert leider nicht...
ich befürchte, dass es was mit meinen vorher eingegeben Daten zu tun hat?!

wenn ich den Pfad, in den die Datei kopiert werden soll nur bis zu ...\%Kundenname%\ schreibe funktioniert es...
 
Statt:
U:\"Betriebsanleitungen, Dokumentationen"\"Elektro - Schaltplaene"\"%Kundenname%"\"%Auftragsnummer% ""%Maschinenbezeichnung% ""%Ex Zone%"\

So:
"U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%\"

Und auch das:
mkdir d:\"%Auftragsnummer% ""%Kundenname% ""%Maschinenbezeichnung% ""%ex zone%"

Würde ich so schreiben:
mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %ex zone%"

Ob es an den Eingaben liegt kannst du ja sehen, indem du dir vorher mal die ganzen Sachen ausgeben lässt mit echo. Das kannste ja wieder rausnehmen wenns funzt.
 
Zuletzt bearbeitet:
kaikuwe schrieb:
Statt:
U:\"Betriebsanleitungen, Dokumentationen"\"Elektro - Schaltplaene"\"%Kundenname%"\"%Auftragsnummer% ""%Maschinenbezeichnung% ""%Ex Zone%"\

So:
"U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%\"

Und auch das:
mkdir d:\"%Auftragsnummer% ""%Kundenname% ""%Maschinenbezeichnung% ""%ex zone%"

Würde ich so schreiben:
mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %ex zone%"

Ob es an den Eingaben liegt kannst du ja sehen, indem du dir vorher mal die ganzen Sachen ausgeben lässt mit echo. Das kannste ja wieder rausnehmen wenns funzt.

Zunächst danke für die superschnellen Antworten!

Das mit dem copy funktioniert, außer wenn ich bei "Ex Zone" nichts eingebe. Das Problem ist, dass nur in manchen Projekten bei Ex was eingegeben wird...
z.B.:
Auftragsnummer:10
Kunde: 20
Maschinennr: 30
Ex-Zone: HIER KEINE EINGABE!!!

dann geht es nicht. Wenn ich beim letzten Punkt einfach irgendwas reinschreib (leerzeichen funzt nicht :( ) geht es... Kann man das noch irgendwie umgehen? :)
 
Code:
@echo off
echo Bitte Informationen eingeben:
set /p "Auftragsnummer=Auftragsnummer: "
set /p "Kundenname=Kundenname: "
set /p "Maschinenbezeichnung=Maschinenbezeichnung: "
set /p "Ex Zone=Ex Zone: "


IF "%Ex Zone%" == "" (

mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung%"
mkdir "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung%"
explorer.exe "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\"
copy "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\listen vorlage.xls" "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung%\"

) ELSE (

mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %ex zone%"
mkdir "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%"
explorer.exe "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\"
copy "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\listen vorlage.xls" "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%\"

)

@exit

müsste so klappen...
 
Zuletzt bearbeitet:
Wie wäre es mit nem Befehl nach Typ (Achtung, Pseudo-Code)

Wenn Ex Zone = legaler Wert -> Copy mit Ex Zone

sonst -> Copy ohne Ex Zone

Edit: Also so, wie's über mir steht.
 
Da musst du dann wohl mit IF abfragen arbeiten. Und zwei Fälle einbauen. Einmal den Fall wo es gesetzt ist, einmal den Fall wo es nicht gesetzt ist.

Z.B.:

Code:
if not defined "Ex Zone" (
   mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% Ex Zone: "
   set tempdir="d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% Ex Zone: "
) else (
   mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %Ex Zone%"
   set tempdir="d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %Ex Zone%"
)
dann den copy-befehl ins %tempdir%
Oder bei der ersten Variante "Ex Zone: " hintendran ganz weglassen, wie es beliebt...
Ergänzung ()

eri schrieb:
Code:
...

IF "%Ex Zone%" == "" (

...

müsste so klappen...[/QUOTE]

Ausm Bauch raus sage ich, dass die Abfrage so nicht funzt! Da die Variable nicht leer ist, sondern gar nicht existiert! ;) 
Aber da lasse ich mich gerne eines besseren belehren.
 
Zuletzt bearbeitet:
hmm, geht das bei den batch-dateien garnicht, wenn man die variable auf "leer" überprüft?
bin derzeit ein wenig mit VB am scripten... da würde es gehen :)

"not defined" ist mir grad net in den sinn gekommen :)


Edit:

Code:
@echo off
set /p "Ex Zone=Ex Zone: "

IF "%Ex Zone%" == "" (

echo "Ex-zone LEER"

) ELSE (

echo %Ex Zone%

)

@exit

habs grad getestet... funktioniert :)
 
Zuletzt bearbeitet:
eri schrieb:
Code:
@echo off
echo Bitte Informationen eingeben:
set /p "Auftragsnummer=Auftragsnummer: "
set /p "Kundenname=Kundenname: "
set /p "Maschinenbezeichnung=Maschinenbezeichnung: "
set /p "Ex Zone=Ex Zone: "


IF "%Ex Zone%" == "" (

mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung%"
mkdir "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung%"
explorer.exe "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\"
copy "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\listen vorlage.xls" "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung%\"

) ELSE (

mkdir "d:\%Auftragsnummer% %Kundenname% %Maschinenbezeichnung% %ex zone%"
mkdir "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%"
explorer.exe "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\"
copy "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\listen vorlage.xls" "U:\Betriebsanleitungen, Dokumentationen\Elektro - Schaltplaene\%Kundenname%\%Auftragsnummer% %Maschinenbezeichnung% %Ex Zone%\"

)

@exit

müsste so klappen...



DAT GEHT! Ich werd verrückt! :)

wollte schon nach if then else fragen, wusste aber den Kontext für Bat nich :)
In Excel kann ichs auswendig, aber bei Batch bin ich doch eher unerfahren :)

Ich bedanke mich herzlich bei eurer eifrigen Hilfe - Wahnsinn wie schnell das ging :)
Ergänzung ()

Einen Anschlag hätte ich aber noch vor:

Ich möchte den Ordner, der unter ...\elektro-schaltplaene\... erstellt wurde in den Ordner unter Q:\Projekte verlinken und ihm dabei einen vorher fest definierten Namen geben.

Ist das auch per Batch möglich oder muss ich hierzu zu VBA greifen?
Wie könnte dort evtl. der Datenaustausch stattfinden, dass ich meine Projektdaten nicht 2 mal eingeben muss?



Wäre schön wenn auch hierzu Ideen kämen :)
 
mklink geht scheinbar nur unter win vista und win7, oder?

gibts ne brauchbare alternative für winxp? keine lust alle pcs hier zu upgraden :)
 
Ich glaube da geht das nicht von Hause aus, sondern nur mit dem "Windows 2003 Resource Kit Tools". Dort gibt es dann die Befehle junction.exe und linkd.exe. Wobei für dich wohl linkd der interessante wäre.

Angaben ohne Gewähr! Nur was besseres fällt mir gerade nicht ein.
 
Zurück
Oben