Batch Datei Fragt, welche Programme ich starten möchte

...komplette Frage anzeigen

4 Antworten

Ich glaube, mit "Windows-Boardmitteln" bekommt man das gar nicht hin.

Das Problem ist, man kann nicht einfach auf Gleichheit prüfen (z.B. 25 = 25), sondern man muss auf "kommt darin vor" prüfen (also 5 kommt in 25 vor).

Ich denke, dass in Windows-Batch-Dateien solche Befehle nicht vorkommen.

Bei Bash-Skripten (z.B. in Linux) gibt es diese Möglichkeit; man kann "bash" allerdings auch für Windows installieren.

Ich selbst würde ein Programm in C schreiben, anstatt mich mit Batch-Dateien herumzuärgern.

GFPegobert 28.08.2013, 17:59

Kann ich mit Notepad++ in C Programmieren und das dann in ner Bat Datei speichern und ausführen?

0
martin7812 29.08.2013, 13:39
@GFPegobert

Nun ja. C (oder C++, Java, Pascal, ...) kann man mit jedem Texteditor programmieren.

Allerdings wird das Programm dann compiliert: Aus der "Textdatei" wird mit einem speziellen Programm - dem Compiler - eine ausführbare Datei (.EXE) erzeugt.

Du bräuchtest dazu allerdings einen solchen Compiler (diese gibt es im Internet kostenlos zum herunterladen) und müsstest die entsprechende Programmiersprache können (was wohl das größere Problem wäre).

1
GFPegobert 30.08.2013, 15:50
@martin7812

Ah, sehr gut!
Den Compiler lad ich mir runter, in C++ kenn ich schon ein paar Befehle, allerdings nicht viele. Aber das Internet weiß alles :)

0
psysmo 03.09.2013, 12:53

sicher ist batch in der lage so etwas zu machen.. keine ahnung haben aber beste antwort.. oO

0

Naja, dann ist deine Datei fehlerhaft. Oder du hast sie nicht in das Verzeichnis autostart kopiert:

C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart

Mal eben so aus der Ferne dürfte dir hier keiner helfen können ... Recherchiere einfach mal in Foren, sicher hast du nur eine Kleinigkeit vergessen

GFPegobert 27.08.2013, 15:24

Nein,Nein, das mit dem Autostart funktioniert schon, nur ich weiß nicht, wie ich es schaffe, das die Programme geöffnet werden, deren Ziffern ich eingebe.

0

Also, auch wenn behauptet wurde, dass es mit Batch nicht möglich sei.

Hier eine Batch, die genau das macht! -man muss nur wissen wie. ;) Eingabe der zahlen 1-7 (erweiterung leicht), zB: 2564 -und die zugewiesenen Programme starten.

(kopier den code in notepad++, habe alles beschrieben)

@echo off & setlocal EnableDelayedExpansion
set /p "eing="
REM Ab hier erweitern falls noetig. (zB. set "acht8=%eing:~0,8" *next line* set "acht=!acht8:~-1")
set "erst=%eing:~0,1%"

set "zweit2=%eing:~0,2%"
set "zweit=!zweit2:~-1!"

set "dritt3=%eing:~0,3%"
set "dritt=!dritt3:~-1!"

set "viert4=%eing:~0,4%"
set "viert=!viert4:~-1!"

set "funft5=%eing:~0,5%"
set "funft=!funft5:~-1!"

set "sechst6=%eing:~0,6%"
set "sechst=!sechst6:~-1!"

set "siebt7=%eing:~0,7%"
set "siebt=!siebt7:~-1!"
REM set "acht8=%eing:~0,8%"
REM set "acht=!acht8:~-1!"

REM Ab hier erweitern wenn noetig. (zB. call :!acht!)
REM Das "goto nxt" und ":nxt" muss immer am Schluss von diesem Abschnitt sein.
call :!erst!
call :!zweit!
call :!dritt!
call :!viert!
call :!funft!
call :!sechst!
call :!siebt!
REM call :!acht!
goto ende
REM Hier kannst du die "echo"'s mit "start <programm>" ersetzen. (zB. bei :2 start Excel.exe; bei :5 start Explorer.exe; bei :7 start Firefox.exe)
REM Wenn erweitert wurde, muss auch hier erweitert werden. (zB. :8 *new line* if DEFINED %eight% goto ende *new line* start myApp.exe *new line* goto ende)
REM Das "goto ende" und ":ende" muss immer am Schluss der Batch-Datei sein; Und NACH ":ende" darf KEIN Zeilenumbruch oder sonstiges sein!
REM "@pause" kann entfernt werden, wenn alles passt.
:1
if DEFINED one goto ende
set "one=1"
echo numer eins REM ***HIER: start programm.exe***
goto ende
:2
if DEFINED two goto ende
set "two=1"
echo nummer zwei REM ***HIER: start excel.exe***
goto ende
:3
if DEFINED three goto ende
set "three=1"
echo nummr drei REM ***HIER: start programm3.exe***
goto ende
:4
if DEFINED four goto ende
set "four=1"
echo nr vier REM ***HIER: start programm4.exe***
goto ende
:5
if DEFINED five goto ende
set "five=1"
echo nummr fünf REM ***HIER: start explorer.exe***
goto ende
:6
if DEFINED six goto ende
set "six=1"
echo nr sechs REM ***HIER: start programm6.exe***
goto ende
:7
if DEFINED seven goto ende
set "seven=1"
echo siiiiben REM ***HIER: start firefox.exe***
REM goto ende (falls mit :8 weitergeht)
REM :8
REM if DEFINED eight goto ende
REM set "eight=1"
REM start another_prog.ex
:ende
@pause

leider war es nicht möglich die var's in der for-schleife zusammenzusetzen.. sonst wäre der code um einiges kürzer. Wenn jemand weiss wie man das umsetzen könnte, wäre ne kleine spielerei....in etwa so:

set /p "eing="  
for /L %%i in (1,1,7) do (
set "zahl=:~0,%%i"
echo !zahl!
pause
set "sig=%"
set "this=!sig!eing!zahl!!sig!"
set "that=!sig!!this!!sig!"
echo !that!
pause
)

so... auch wenn Batch keine hohe programmiersprache ist, kann man einiges damit umsetzen, aber naive Behauptungen verbreiterrrrrrrn ohne ahnung der materie zu haben ist lässtig.

klar, mit C++ (oder nur schon vbs) ist mehr, effizienter -möglich.. aber ohne kreativität wäre das ganze doch lahm ;)

lg

ganz leicht.

schreibe deine eingabe zB. 257 in eine %temp%datei.txt mit for und find lässt sich dann leicht ermitteln welche zahlen du eingegeben hast (in der txt)

:)

Was möchtest Du wissen?