bassdriver
Goto Top

Batch datei soll mit Tastendruck etwas bestimmtes ausführen

per taste 1 =script 1 ausführen per taste 2 = script 2 ausführen

Hallo,

ich wollte eine Batch datei anfertigen die mehrere Scripts ausführt.
Allerdings sollte dies so ablaufen:

Bsp:

Taste "A" = Führt Script eins aus
Taste "B"= Führt Script zwei aus

WIe kann ich das so anfertigen?

Content-Key: 146119

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

Printed on: April 26, 2024 at 08:04 o'clock

Mitglied: 60730
60730 Jul 02, 2010 at 11:18:59 (UTC)
Goto Top
moin und willkomen

ohne ross und reiter - ist der Tipp etwas schwerer...

choice /?
set /p

Gruß
Member: TDuemesnil
TDuemesnil Jul 02, 2010 at 11:21:03 (UTC)
Goto Top
nur als Anregung
set /? hilft dabei
set /P Eingabe=[FRAGE]
if "%Eingabe%"=="A" call batcheins
if "%Eingabe%"=="B" call batcheins
Member: Bassdriver
Bassdriver Jul 02, 2010 at 11:51:40 (UTC)
Goto Top
Zitat von @TDuemesnil:
nur als Anregung
set /? hilft dabei
set /P Eingabe=[FRAGE]
if "%Eingabe%"=="A" call batcheins
if "%Eingabe%"=="B" call batcheins

mit diesem script führt bei angabe von b aber auch gleichzeitig a aus...

ich habs bei mir so:
@echo off
set /P Eingabe=Eingabe
if "%Eingabe%"=="a" call   
	echo A wurde ausgeführt -- %date% %time%  >> C:\log.txt
if "%Eingabe%"=="b" call  
    echo B wurde ausgeführt -- %date% %time%  >> C:\log.txt 
if "%Eingabe%"=="c" call exit  
	echo C wurde ausgeführt -- %date% %time%  >> C:\log.txt
Wenn ich jetzt "c" eingebe...

Meine LOG sieht so aus:

A wurde ausgeführt -- 02.07.2010 13:54:32,25
B wurde ausgeführt -- 02.07.2010 13:54:32,26
C wurde ausgeführt -- 02.07.2010 13:54:32,26

[Edit Biber] Alles nach "Batch & Shell" geschoben. Und schon mal Codetags dazugepackt... das wird bestimmt noch welcher... face-wink [/Edit]
Member: Bassdriver
Bassdriver Jul 02, 2010 at 12:38:46 (UTC)
Goto Top
----
[Edit Biber] Alles nach "Batch & Shell" geschoben. Und schon mal Codetags dazugepackt... das wird bestimmt noch
welcher... face-wink [/Edit]


Wie meinst Du das?
Member: Biber
Biber Jul 02, 2010 at 12:51:38 (UTC)
Goto Top
Moin bassdriver,

willkommen im Forum.

Ich meine damit, dass ich deine Frage aus dem Bereich "Windows allgemein wirds wohl sein" in den Bereich "Batch & Shell" geschoben habe.

Dort findet sie bestimmt viel eher Bekannte und Verwandte.

Außerdem habe ich diejenigen Zeilen, die jetzt in deinem Kommentar mit einer generierten Zeilennummer erscheinen, als Code formatiert

Das Wort Code, so wie es hier im Forum verwendet wird, hat nichts mit dem ähnlich klingenden Wort aus dem Bereich Lebewesen zu tun, sondern ist neudeutsch für "Schnipsel". Jedenfalls hat es meistens nichts miteinander zu tun.
Oder zumindest nicht zwingend.

Anyhow, ich bin optimistisch, dass wir heute deinen Schnipsel noch zum Fliegen bringen.

Grüße
Biber
Member: Bassdriver
Bassdriver Jul 02, 2010 at 12:59:45 (UTC)
Goto Top
Achso Ok

dankeschön ;)
Member: TDuemesnil
TDuemesnil Jul 02, 2010 at 13:04:03 (UTC)
Goto Top
@echo off
set /P Eingabe=Eingabe
if "%Eingabe%"=="a" echo A wurde ausgeführt -- %date% %time% >> log.txt
if "%Eingabe%"=="b" echo B wurde ausgeführt -- %date% %time% >> log.txt
if "%Eingabe%"=="c" echo C wurde ausgeführt -- %date% %time% >> log.txt

Call EOL mach gar nix in deinem Script
Die Zeile zwischen den IF abfragen sind ganz normale zeilen und haben mit dem if nix zu tun.

HTH
Thomas
Member: Biber
Biber Jul 02, 2010 at 13:15:02 (UTC)
Goto Top
Mhhh,

ich bin bei den Temperaturen doch nicht so geduldig, wie ich von mir dachte.

Deshalb ergänzend zu TDuemesnils' Ausführungen (leider ohne Codeformatierung *anmerk*)
@echo off & setlocal
:: Setlocal stellt sicher, dass im Batch gesetzte Variablen auch nur von und für diesen Batch sind
Set "log=c:\temp\log,txt"  & :: im Einsatzfall NACH dem Testen  
Set "log=con" & :: JETZT, beim Testen als Logfile die Konsole/den Bildschirm nehmen.  

set /P Eingabe=Eingabe
::  "IF /i " stellt sicher, das Klein/Gross-Schreiben keinen Unterschied macht ..> also "a" und "A" sind beide okay  
if  /i "%Eingabe%"=="a" echo A wurde ausgeführt -- %date% %time%>>%log%  
if /i "%Eingabe%"=="b" echo B wurde ausgeführt -- %date% %time%>>%log%  
if /i "%Eingabe%"=="c" echo C wurde ausgeführt -- %date% %time%>>%log%  

Und das EOL bei Thomas bedeutet "End of Line"--> ein "Call" gefolgt von "Nix" in der Zeile.

Grüße
Biber
Member: Bassdriver
Bassdriver Jul 02, 2010 at 13:37:14 (UTC)
Goto Top
Jaa Super dankeschön klappt schonmal!!

Jetzt fehlt mir nur noch ein Error Script...

Bsp:

Drücken Sie Taste A,B,C

:: der Nutzer drückt D

Falsche Taste gedrückt bitte wiederholen
Member: Biber
Biber Jul 02, 2010 at 14:29:37 (UTC)
Goto Top
Moin Bassdriver,

dann lass uns langsam und schrittweise weiter verfeinern.

Mit der bisherigen Skizze haben wir ja schon bewiesen, dass wir auf die "richtigen" Eingaben "richtig" reagieren.
Aber eben nur in derselben Zeile ( in der Zeile, die mit "IF...." beginnt, steht auch das, was ausgeführt werden soll).

Jetzt lassen wir ihn/sie/es mal springen [Hilfe zu GOTO gibt es unter Goto /? am CMD-Prompt]

@echo off & setlocal
:: Setlocal stellt sicher, dass im Batch gesetzte Variablen auch nur von und für diesen Batch sind
Set "log=c:\temp\log.txt"  & :: im Einsatzfall NACH dem Testen  
Set "log=con" & :: JETZT, beim Testen als Logfile die Konsole/den Bildschirm nehmen.  
:TryAgainPls
set /P Eingabe=Eingabe
::  "IF /i " stellt sicher, das Klein/Gross-Schreiben keinen Unterschied macht ..> also "a" und "A" sind beide okay 
if  /i "%Eingabe%"=="a" goto :Machwat  
if /i "%Eingabe%"=="b" goto :Machwat  
if /i "%Eingabe%"=="c" goto :Machwat  
If /i "%Eingabe%"=="x" goto :eof  
:: wenn keines der ganzen GOTOs gegriffen hat... noch ein Versuch
Echo Falsche Eingabe - Bitte nur A, B, C eingeben oder X für Abbrechen
goto :TryAgainPls

:: Ende des Hauptscripts
##  Morgen kommen die Jungs nach Hause ##
## 2 Becher Joghurt ##
## Mutti anrufen ##
## sonstige Notizen ##

:Machwat
echo %Eingabe% wurde ausgeführt -- %date% %time%>>%log%
Echo hier könnte mehr passieren
pause

Grüße
Biber
Member: kkboy94
kkboy94 Jul 02, 2010 at 20:24:24 (UTC)
Goto Top
Ich würde noch ein Offset bei die Variablen tun also so:
@echo off & setlocal
:: Setlocal stellt sicher, dass im Batch gesetzte Variablen auch nur von und für diesen Batch sind
Set "log=c:\temp\log.txt"  & :: im Einsatzfall NACH dem Testen  
Set "log=con" & :: JETZT, beim Testen als Logfile die Konsole/den Bildschirm nehmen.  
:TryAgainPls
set /P Eingabe=Eingabe
::  "IF /i " stellt sicher, das Klein/Gross-Schreiben keinen Unterschied macht ..> also "a" und "A" sind beide okay 
if  /i "%Eingabe:~,1%"=="a" goto :Machwat  
if /i "%Eingabe:~,1%"=="b" goto :Machwat  
if /i "%Eingabe:~,1%"=="c" goto :Machwat  
If /i "%Eingabe:~,1%"=="x" goto :eof  
:: wenn keines der ganzen GOTOs gegriffen hat... noch ein Versuch
Echo Falsche Eingabe - Bitte nur A, B, C eingeben oder X für Abbrechen
goto :TryAgainPls

:: Ende des Hauptscripts
##  Morgen kommen die Jungs nach Hause ##
## 2 Becher Joghurt ##
## Mutti anrufen ##
## sonstige Notizen ##

:Machwat
echo %Eingabe% wurde ausgeführt -- %date% %time%>>%log%
Echo hier könnte mehr passieren
pause

@Bassdriver
So wird sichergestellt, dass nur der erste Buchstabe relevant ist:
Du kannst also auch bei der Eingabe "Blub" eingeben, und die Batch wertet es als einfaches "b":

MfG Karsten