tigerbase
Goto Top

frage batch datei

Ich wollte das Installieren einiger programme etwas automatisieren und habe eine batch-datei geschrieben.
ich wollte noch eine Userabfrage einbauen um alles in einer batch-datei zu realisieren, da es unter bestimmten Vorraussetzungen nicht nötig ist ein bestimmtes Programm mit zu instalieren. Allerdings bekomme ich die Userabfrage nicht hin hat einer nenn Tip?

Ich habe eine batch-datei geschrieben die mehrere Programme quasie nach einander installiert. Da unter bestimmten Voraussetzungen ein Patch nicht installiert werden muß, wollte ich eigentlich in die batch-datei eine Userabfrage einbaun nach dem Motto

" ist in ihrem programm das patch 1.4b schon integriert? y=ja n=nein "

ist antwort j goto .....
ist antwort n goto ....

Ich bekomme es aber nicht hin das der Rechner auf die Eingabe wartet und entsprechend der Antwort zu der jeweiligen Zeile springt. Kann mir einer nenn Tipp geben wie ich das realisieren kann ohne das ich 2 batch-datein schreiben muß. Eine die das patch mitinstalliert und eine die es überspringt. Mir fällt nix mehr ein und ich gebe zu das ich eher ein Laie bin wenn es um schreiben von batch-datein geht.
Batch-datein sind aber sehr nützlich und ich habe schon einige Sachen für die ich ebenfalls eine batch-datei schreiben will. Ich bekomme aber einfach nicht die Tastaturabfrage hin.
Hat jemand nenn Tipp oder mal ne Sekunde Zeit der eventuell weiß wie das geht und mir nenn hilfreichen Tipp geben kann?

Content-ID: 115094

Url: https://administrator.de/forum/frage-batch-datei-115094.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

Nottrott
Nottrott 01.05.2009 um 11:42:54 Uhr
Goto Top
Hi,

damit sollte es gehen.

@echo off
echo Ist in ihrem programm das patch 1.4b schon integriert? y=ja n=nein
SET /P antwort=
IF /i %antwort% == y goto ja
goto nein

:ja
echo Ja
goto ende

:nein
echo Nein

:ende

pause

Es wird erst die Frage gestellt und mit SET /P auf eine Eingabe gewartet, die dann in %frage% gespeichert wird. Wegen der Übersichtlichkeit ist die Abfrage der Antwort in der Zeile unter der Frage, damit die Eingabe unter der Frage steht und nicht direkt im Anschluss. Du könntest aber auch schreiben:
SET /P antwort=Ist in ihrem programm das patch 1.4b schon integriert? y=ja n=nein
Je nach Antwort (Groß-/Kleinschreibung wird durch /i ignoriert) wird dann zu :ja oder :nein gesprungen, wo du dann z.B. deine Software installieren kannst.

Gruß
Nottrott
77559
77559 01.05.2009 um 13:21:36 Uhr
Goto Top
Hallo Nottrott,

ziemlich gut, perfekt wäre wenn eine Leereingabe kein
"goto" ist syntaktisch an dieser Stelle nicht verarbeitbar.
erzeugen würde weil die linke Seite der IF Abfrage dann ebenfalls leer ist.

Also besser:
If /I "%antwort%"=="y" goto ja

Warum eigentlich y und nicht j?

Einen schönen Feiertag noch!

Gruß
LotPings
tigerbase
tigerbase 01.05.2009 um 15:58:33 Uhr
Goto Top
Sind alles gute Tipps. Ein Problem habe ich trotzdem noch. Die patch-datei befindet sich auf einer dvd mit allen Programmen die Installiert werden sollen. Ich habe auf der cd ne index.html Datei die automatisch geöffnet wird wenn die dvd eingelegt wird. Eigentlich wollte ich die Autoinstallation
( *.bat Datei ) durch einen Hyperlink starten lassen, nur leider gibt es dann noch ein Problem. Vermutlich durch den Browser verursacht. Klickt man auf der dvd die *.bat Datei an funktioniert alles super, weil die *.bat so ausgelegt ist das der Rechner sich im Stampfaht der dvd befindet. Also habe ich mit einfachen cd Befehl das jeweilige Verzeichnis geöffnet in der *.bat datei und das von dort zu instalierende Programm gestartet.
Soweit so gut, alles ok, aber wenn ich die *.bat durch einen Hyperling von der über dem Browser laufenden Startseite starten lasse, bekomme ich nur Fehlermeldungen das der Rechner den Pfaht nicht findet. Ich vermute mal das der Rechner zwar die *.bat Datei startet aber dann wieder zum Browser wechselt und somit irgend wo auf der C: rumhängt wo logischer Weise die *.bat die entsprechenden Verzeichnisse und Programme nicht findet.
Da die dvd aber zu anderen Rechnern kompatibel sein mus und jeder User eventuell andere Laufwerksbuchstaben hat für sein dvd Laufwerk kann ich in der *.bat nicht mit festen Laufwerksbuchstaben arbeiten. Weil was bei mir zb D: ist kann auf einem anderen Rechner ja X: oder Y: sein. Wie löse ich das Problem wenn die Autostartseite der dvd über den Browser geöffnet wird, das die *.bat Datei trotzdem die Verzeichnisse und Programme auf dem dvd Laufwerk findet und starten kann???
Wie gesagt, starte ich die *.bat über den Windows Explorer funktioniert alles tadelos nur wenn ich die über die dvd Startseite als Hyperlink anspreche findet der Rechner die Programme nicht weil er warscheinlich durch den offenen Browser nicht mehr im Stammpfat der dvd steht.
Wie kann ich das Problem lösen. Vor allem Laufwerksbuchstaben unabhängig das die *.bat Datei auch von der html Startseite aus per Mausklick und Hyperlink ausgeführt wird ohne das die *.bat datei die pfahte nicht findet.
Gibt es ne Möglichkeit die *.bat Datei so zu modifizieren das der Rechner den Stammpfaht der dvd absucht und somit die *.bat auch als Hyperlink sauber läuft?

Vieleicht findet sich ja auch einer der ne Lösung für dieses Problem hat.
Wie gesagt ich bin kein Programierer die Laienhaften *.bat Datein welche ich mir Teilweise mal austüftle beruhen meistens auf einfache dos-befehle die ja teilweise auch im Windows noch existieren. Die Datei sind also sehr einfach und extrem simpel gestrickt. Aber es funtioniert und das ist wichtig.
Nur wie sage ich immer " dumm darf man sein aber zu helfen mus man sich wissen face-wink "
77559
77559 01.05.2009 um 16:44:45 Uhr
Goto Top
Hallo tigerbase,

ich überlege gerade, ob das auch etwas knapper formuliert werden könnte face-wink

Die Batchdatei kennt ihren eigenen Standort: %~f0
Du kannst das benutzen um das, oder ein relativ zur Batch gelegenes Verzeichnis, zum aktuellen Verzeichnis zu machen:
Hier mal Unterverzecihnis Test im selben Verzeichnis wie die Batch.
Statt CD /D geht auch pushd wenn du später mit popd ins originäre Verzeichnis zurückspringen willst.

@Echo off
echo ME=%~f0
echo Pfad = "%~dp0"  
CD /D "%~dp0.\test"  
Dir *

Gruß
LotPings
miniversum
miniversum 01.05.2009 um 16:59:02 Uhr
Goto Top
LotPings hats eigentlich schon geschrieben.
Ergänzend kannst du die Aufrufe der Installationsprogramme (also der exe Dateien) auch direkt darüber machen.
%~d0 gibt dir dabei den Laufwerksbuchstaben. So kannst du die Aufrufe dann so machen:
"%~d0\programm1\setup.exe"
"%~d0\programm2\setup.exe"
tigerbase
tigerbase 04.05.2009 um 09:40:11 Uhr
Goto Top
hat so leider nicht funktioniert meldung vom rechner pfad strimmt nicht
aber ich habe bissel getüftelt und das ist dabei rausgekommen so funktioniert es die exe seperat und es läuft face-wink ich danke euch die seewölfe clan dvd zum wolfpack 2.0 ist fast fertig. da werden sich unsere kommandanten freuen das ich die installation automatisieren konnte und die fehlerquote für installationsfehler geht somit nahezu gegen 0 was das game im onlinebetrieb wesendlich stabiler und nahezu absturtzfrei macht. danke für die tips waren mir ne große hilfe gewesen denn wie schon gesagt ich bin kein programierer nur hin und wieder mal ne kleine patch schreiben so als spaß mehr is da nicht drin face-wink


CD /D "%~dp0.\Wolfs_Pack2.0\"

Wolfs_Pack2.0.exe
checkex
checkex 13.06.2011 um 16:35:46 Uhr
Goto Top
Es könnte ca. so aussehen:

@echo off

rem der Quellcode...


:start
set /p aw=Frage... ? (j/n)
if "%aw%"=="" goto start
if /i "%aw%"=="j" goto weiter1
if /i "%aw%"=="n" goto weiter2

:weiter1

rem tu dies un das ...

:weiter2

rem tu dies und das...

;exit

MfG
Nottrott
Nottrott 13.06.2011 um 21:07:36 Uhr
Goto Top
Warum suchst du dir als ersten Beitrag einen über 2 Jahre alten Thread aus der auch schon als beantwortet markiert wurde?
Außerdem, vor :weiter2 wäre noch ein goto exit praktisch face-wink