Batch bzw. cmd-Datei erstellen

CGPU

Cadet 4th Year
Registriert
Okt. 2020
Beiträge
87
Moin,

ich habe drei Batch-Dateien erstellt. Die laufen soweit auch prima. Gerne möchte ich sie aber noch ein wenig "verbessern".

Die erste Batch-Datei soll diverse Internetseiten öffnen.

@echo off
timeout 1 nul
start chrome --new-window Google
start chrome Moin Moin!
start chrome DuckDuckGo — Privacy, simplified.

Ich habe keine Ahnung, was ich gemacht habe. Aber das habe ich mir im Internet zusammengesucht und komme nun nicht weiter. Ich hätte gerne, dass alle drei Seiten in einem neuen "Chrome-Dings" geöffnet werden und da als Tab.
Also wenn ich Chrome bereits geöffnet habe, öffnet sich ein neues Fenster und alle drei Seiten sind dort als Tabs vorhanden.
Das bekomme ich mit dem Code oben nur mit dem ersten Link hin.

Die zweite Datei:

start "MSFS" "D:\Steam\steamapps\common\MicrosoftFlightSimulator\FlightSimulator.exe"
start "LNM" "C:\Little Navmap\littlenavmap.exe"
start "LNM Connect" "C:\Little Navmap\Little Navconnect\littlenavconnect.exe"

Öffnet drei Anwendungen - und macht das so, wie ich es gerne hätte.

Hierzu eine Frage: Kann man einstellen, dass eine weitere Anwendung optional geöffnet wird? Also eine kurze Frage kommt "Soll XY ebenfalls geöffnet werden?"

Die dritte Datei öffnet ebenfalls Anwendungen. Kann man hier einstellen, dass Anwendungen nur geöffnet werden, wenn diese nicht bereist geöffnet sind?

Letzte Frage:
Kann man damit auch "irgendwie" Anwendungen auf einem anderen PC öffnen lassen? Falls ja, würde ich mal versuchen diese in ein Netzwerk einzubinden. Ansonsten lasse ich das.

Lieben Dank!

Ich hoffe ich bin hier richtig (und hätte es nicht in einem anderen Bereich des Forums versuchen sollen).

Grüße
Christian
 
klar, if statements sind möglich

du musst dann halt entsprechende Abfragen definieren - inwieweit sich aus der cmd raus aufgerufene Webseiten im Browser bestimmen lassen weiß ich nicht

Eventuell hast du mit Powershell mehr Erfolg, das kann allgemein deutlich mehr
 
  • Gefällt mir
Reaktionen: CGPU und Raijin
CGPU schrieb:
Die erste Batch-Datei soll diverse Internetseiten öffnen.

Dafür braucht es keine Batch, das können Browser mittlerweile von Haus aus: https://www.groovypost.com/howto/open-same-set-of-web-pages-every-time-start-browser/

CGPU schrieb:
Ich hoffe ich bin hier richtig (und hätte es nicht in einem anderen Bereich des Forums versuchen sollen).

Die Frage, ob eine Skriptsprache „echtes“ Programmieren ist, ist so alt wie die Geschichte des Programmierens selbst und wird immer debattiert werden. Wir lassen das Thema aber erst mal hier, weil es ein ausreichend passendes Unterforum ist.
 
  • Gefällt mir
Reaktionen: CGPU
Batch is a bitch!

Das muss man leider so sagen. Batch ist streng genommen nur dafür geeignet, eine Liste von Befehlen abzuarbeiten. Erweiterte Logik mit Bedingungen, Schleifen und dergleichen gibt es zwar auch, aber Batch als Sprache ist eine ziemliche Krücke. Wann immer man eine andere Möglichkeit hat - und Powershell IST eine solche in Windows 10 eingebaute Möglichkeit - sollte man sie auch nutzen.

CGPU schrieb:
Ich hätte gerne, dass alle drei Seiten in einem neuen "Chrome-Dings" geöffnet werden und da als Tab.
Versuch mal chrome mit /new-tab zu starten. Gibt aber ggfs noch andere Möglichkeiten, weil Browser häufig ja bereits Sessions speichern können, also ein Set an Webseiten. Eventuell kann man direkt eine gespeicherte Session aufrufen.


CGPU schrieb:
Kann man einstellen, dass eine weitere Anwendung optional geöffnet wird? Also eine kurze Frage kommt "Soll XY ebenfalls geöffnet werden?"
Code:
:LOOP
SET /p antwort="Willst du?"
IF /i "%antwort%" == "J" GOTO:LOSGEHTS
IF /i "%antwort%" == "N" GOTO:AUFKEINENFALL
ECHO Falsche Antwort!
GOTO:LOOP


:LOSGEHTS
ECHO "Du wolltest es so...."
GOTO:END

:AUFKEINENFALL
ECHO "Na dann eben nicht"
GOTO:END


CGPU schrieb:
Kann man hier einstellen, dass Anwendungen nur geöffnet werden, wenn diese nicht bereist geöffnet sind?
Wenn du prüfen willst ob eine Anwendung bereits läuft, kannst du mit tasklist.exe eine Liste der aktiven Prozesse abrufen und nach der gewünschten Anwendung suchen.


CGPU schrieb:
Kann man damit auch "irgendwie" Anwendungen auf einem anderen PC öffnen lassen?
Jein. Mit pstools kann man unter Windows Befehle auf einem anderen Windows-PC ausführen. Ist sozusagen ein rudimentäres ssh.
 
  • Gefällt mir
Reaktionen: Sun_set_1 und CGPU
Raijin schrieb:
Code:
:LOOP
SET /p antwort="Willst du?"
IF /i "%antwort%" == "J" GOTO:LOSGEHTS
IF /i "%antwort%" == "N" GOTO:AUFKEINENFALL
ECHO Falsche Antwort!
GOTO:LOOP


:LOSGEHTS
ECHO "Du wolltest es so...."
GOTO:END

:AUFKEINENFALL
ECHO "Na dann eben nicht"
GOTO:END


END fehlt :P


DeusoftheWired schrieb:
Die Frage, ob eine Skriptsprache „echtes“ Programmieren ist, ist so alt wie die Geschichte des Programmierens selbst und wird immer debattiert werden. Wir lassen das Thema aber erst mal hier, weil es ein ausreichend passendes Unterforum ist.

Da Programmieren nun mal nicht nur objektorientierte Programmierung umfasst, ja ist es. Bei Batch kann wohl noch drüber streiten. Bei VBA wirds schon fließend und bei JS ist man definitiv am programmieren ;)
 
Sun_set_1 schrieb:
Klassischer Copy&Paste Fehler. Ich benutze immer GOTO:EOF weil das keine Sprungmarke braucht.
 
  • Gefällt mir
Reaktionen: ProgrammTube, Sun_set_1 und areiland
Für Datei#3 (wie in Post#4 vorgeschlagen via laufendem Prozess / Taskliste):
Code:
@echo off
REM Editor
tasklist /FI "IMAGENAME eq notepad.exe" 2>NUL | find /I /N "notepad.exe">NUL
REM läuft bereits
REM if "%ERRORLEVEL%"=="0" echo Program is running
REM läuft noch NICHT
if "%ERRORLEVEL%"=="1" Start "" "C:\Windows\notepad.exe"

REM Taschenrechner
tasklist /FI "IMAGENAME eq calc.exe" 2>NUL | find /I /N "calc.exe">NUL
REM läuft bereits
REM if "%ERRORLEVEL%"=="0" echo Program is running
REM läuft noch NICHT
if "%ERRORLEVEL%"=="1" Start "" "C:\Windows\System32\calc.exe"

REM Registry (minimiert starten)
tasklist /FI "IMAGENAME eq regedit.exe" 2>NUL | find /I /N "regedit.exe">NUL
REM läuft bereits
REM if "%ERRORLEVEL%"=="0" echo Program is running
REM läuft noch NICHT
if "%ERRORLEVEL%"=="1" Start "" /MIN "C:\Windows\regedit.exe"

Wir wollten den Usern die PSTools nicht freigeben. Wir haben eine Anwendung, welche Datensätze auf ein Gruppenlaufwerk erstellt (hier einfach AN.txt genannt).
Der Datensatz soll dann in einem weiteren Programm eingelesen werden (hier einfach Notepad als Beispiel).
Sobald vom Programm eine Abschluss-Datei erstellt wird (hier AUS.txt), dann soll das Programm geschlossen werden.
Eine Batch, welche an den entsprechenden Rechnern läuft, wartet auf die Dateien und startet je nachdem:
Code:
@echo off
:ANFANG

REM AN
if exist "C:\TEMP\AN.txt" (
      rem file exists
      start "" "C:\Windows\notepad.exe"
      del /F /Q "C:\TEMP\AN.txt"
) else (
      REM file NOT exists
)

REM AUS
if exist "C:\TEMP\AUS.txt" (
      rem file exists
      taskkill /F /IM "notepad.exe"
      del /F /Q "C:\TEMP\AUS.txt"
) else (
      REM file NOT exists
)

GOTO ANFANG
 
  • Gefällt mir
Reaktionen: Raijin und areiland
Zurück
Oben