Batch Batch Abfrage aus cmd wählen

Frodo2

Cadet 1st Year
Registriert
Sep. 2013
Beiträge
11
hi
ich habe eine batch datei mit einer abfrage. ich möchte jetzt meine abfrage beim aufrufen im cmd direkt auswählen.

@ECHO OFF

ECHO Datensicherung?? (j / n)
SET /p wahl=
IF '%wahl%' == 'j' GOTO WahlJ
IF '%wahl%' == 'n' GOTO WahlN
GOTO ende

:WahlJ
ECHO Sie haben sich fuer die Datensicherung entschieden.
robocopy /E /S (quellpfad) (zielpfad)
ECHO Eine Datensicherung wurde durchgefuehrt.
pause
GOTO ende

:WahlL
ECHO Sie wollen keine Datensicherung.
blabla

:ende
PAUSE

so siehts bis jetzt aus. ich möchte jetzt das man im cmd eingeben kann: d:\Datensicherung j (zielpfad)
wie genau geht das? wenn mir jemand ein tip geben könnte wäre ich sehr dankbar.
ps. bitte keine fragen nach dem "warum so?", ist nicht meine anweisung...
grüße
 
Die "Datensicherung.bat/cmd" in den System32 Ordner schieben (Win7 -> C:\Windows\System32).

Danach lässt sich mit "Datensicherung [Befehle]" die Funktion der Batch Datei ausführen.

Allerdings muss man dafür dein Script noch ein wenig umschreiben damit die Variablen vernünftig übergeben werden. Les dich noch ein wenig ein in Batch Scripting :daumen:
 
clevere Lösung.
aber das geht in meinem fall nicht, und ist auch nicht gesuchte lösung.
trotzdem danke^^
 
Batch-Dateien unter Windows haben automatisch Optionsvariablen gesetzt... das müssten %%1 - 8 oder so sein... ist schon eine Weile her, seit ich das letzte Mal eine geschrieben habe. Die Eingabe kannst du dann an die entsprechende Variable übergeben und schon sollte das so gehen, wie du das möchtest.

PS: Außerdem würde ich eine solche Datei auf keinen Fall in den System32 legen und clever finde ich das auch nicht. Dafür passt man sich besser die PATH-Variable an.
 
Zuletzt bearbeitet:
und wie sieht das dann ungefähr aus?

vielen dank für die antwort
 
%1 und Co sind die Systemvariablen... 1 steht eben an erster Stelle, 2 an zweiter. Ansonsten alles wie gehabt, wie eine normale Variable, die du nur eben nicht deklarieren musst...

Kannst also %wahl% = %1 setzen oder so. Ist nicht schwer.
 
meinname.bat wahl1 quelle ziel

ECHO %1
ECHO %2
ECHO %3

So sollte es doch klappen? warum klappts nicht?
 
wenn du die echos in dein bat file schreibst dann sollte er dir danach

wahl1
quelle
ziel

ausgeben auf der cmd... war das was du solltest?

wolltest du nicht statt echos eher:

SET wahl = %1
 
Zuletzt bearbeitet:
ziel ist das:
man soll cmd öffnen können und eingeben können: datensicherung s (quellpfad) (zielpfad)
heißt : datensicherung ist meine bat datei.
es gibt eine prüfung(soll datensicherung oder was anderes ausgeführt werden) s ist hier die datensicherung.
quell und zielpfad sollen eingegeben werden können.

die bat hat diesen aufbau: (bis jetzt)

@ECHO OFF

set wahl1 = %1
set quelle = %2
set ziel = %3

IF '%1' == 's' GOTO dasi
IF '%1' == 'l' GOTO log

datensicherung.bat wahl1 quelle ziel
ECHO %1
ECHO %2
ECHO %3

ECHO Was moechten Sie tun? Fuer eine Datensicherung druecken Sie s, fuer blabla druecken Sie l? (s / l)
SET /p wahl=
IF '%wahl%' == 's' GOTO dasi
IF '%wahl%' == 'l' GOTO log
GOTO ende

:dasi
robocopy /E /S "d:\Testordner" "d:\speicherort\"
GOTO ende
:log
blabla
:ende
PAUSE


was muss ich ändern, wenn ich das oben beschriebene haben will?
vielen dank schonmal!!!
 
Zuletzt bearbeitet:
ich versteh dich nicht ganz.. wenn du einfach die zeile

"datensicherung.bat wahl1 quelle ziel"

entfernst die ein aufruf des programms selbst ist, dann tut es doch wohl genau was du willst?
die echos würd ich halt weglassen weil sinnlos, und die sets kannst du dir bei so einem simplen programm auch sparen imo.
Am ende musst halt unten das D:\Testordner zeug noch durch %2 bzw. %3 bei speicherort ersetzen. Aber wo ist sonst das problem?
 
okay. tausend dank
funktioniert schon fast wie von mir gedacht.

danke danke :)
Ergänzung ()

kleine nachfrage:
robocopy kopiert mir alle inhalte des ordners, welche option muss ich wählen damit der gesamte quellordner kopiert wird?
 
aber nur fast ;)

robocopy /E /S "%quelle%" "%ziel%"

set wahl1 = %1 <-- ist überflüssig

und den Teil mir dem :log verstehen ich nicht. Vielleicht solltest du mal alles darstellen, was du machen willst.
 
Zuletzt bearbeitet:
Wie meinst du? Dass statt alle Dateien aus Testordner der Ordner Testordner selbst kopiert wird?
Am einfachsten indem du ihn auf der Zielseite wieder erstellen lässt

robocopy "d:\Testordner" "d:\speicherort\Testordner\"

Die Optionen /E und /S widersprechen sich meiner Meinung nach ein wenig, /E allein sollte reichen denk ich? Oder hast du irgendeinen besonderen Grund für beide?
 
bauers: jetzt ist alles schick ^^

syber: danke für den tipp^^
das mit dem e und s hab ich irgendwo her, denke beide werden nicht gebracht

großes danke an alle die mir geantwortet haben
 
so würde ich es machen:

@ECHO OFF

if "%1" == "" goto fehler1
if not exist "%1" goto fehler2

robocopy /e "%1" "%2"
goto ende

:fehler1
echo.
echo Bitte benutzen Sie das Script in folgender Weise:
echo Datensicherung (Quelle) (Ziel)
echo.
echo z.B. Datensicherung D:\Test D:\Speicherort
echo.

goto ende

:fehler2
echo Das Quellverzeichnis existiert nicht!

goto ende

:ende
 
Zurück
Oben