Führen Sie zwei verschiedene Dateien mit einer Batchdatei aus

897
XL909

Meine Bemühungen

Ich habe seit ungefähr 3 Stunden mit den virtuellen Desktop-Kombinationen von Rainmeter gespielt und bin ein absoluter Neuling in der Skriptlogik. Ich habe Probleme, herauszufinden, wie ich es erreichen kann, was ich brauche.

Ich habe

Ich habe also meinen ersten Desktop "MAIN", einen zweiten "AUDIO" und einen letzten "GAMES".
MAIN verwendet Rainmeter nicht und beide verwenden zwei unterschiedliche Rainmeter-Layouts.

Um zwischen Desktops zu wechseln und verschiedene Prog-Programme auszuführen, verwende ich ein Drittanbieterprogramm namens "Windows 10 Virtual Desktops Enhancer" in Kombination mit AutoHotKey (nur zur Vereinfachung der Ausführung).

Der Enhancer macht verschiedene Dinge mit einer INI-Datei (Ändern der Desktops, Hintergrundbilder, Ausführen bestimmter Programme ...)

Hier ist der interessierende Teil der INI-Datei

[RunProgramWhenSwitchingToDesktop] 1=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\taskkill_rainmeter.bat 2=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\load_audio_layout.bat 3=D:\Downloads\win-10-virtual-desktop-enhancer-master\commands\load_games_layout.bat 

Wie Sie sehen, stellen 1, 2 und 3 jeweils einen Desktop dar, und nach dem Pfad von ONLY ONE PROG, da es begrenzt war, habe ich Batch-Dateien erstellt, um mehrere Programme gleichzeitig auszuführen. Wenn ich den Desktop einschalte

  1. es erledigt alle Rainmeter-Aufgaben
  2. es läuft das Audio-Layout von Rainmeter
  3. es läuft das Spiellayout von Rainmeter

Mein Problem betrifft die Batch-Dateien von Desktop 2 und 3 (es scheint, dass die 3 funktionieren)

Hier ist der Desktop 2-Stapel

@echo off  "C:\Program Files\Rainmeter\Rainmeter.exe" !LoadLayout "Audio Desktop Layout"  dir && echo off  D:\Downloads\win-10-virtual-desktop-enhancer-master\msgbox\msgboxAUDIO.vbs 

Der erste Teil ist, Rainmeter zu starten, und der zweite ist, ein Popup-Fenster zu öffnen, in dem "ok, es ist aktiviert" angezeigt wird.

Wenn ich Desktop 2 oder 3 einschalte, wird Rainmeter + ein leeres unbrauchbares Cmd geöffnet, dann keine Popup-Meldung, aber für den Taskkill-Batch wird Rainmeter korrekt beendet und das Popup-Fenster angezeigt. Manchmal zeigt das Popup-Fenster aber beide laufen nie zur selben Zeit, manchmal erscheint ein Popup, wenn ich auf den ersten Desktop zurückkehre. Manchmal funktioniert es, aber ein anderer Rohling cmd(ich kann nicht taskkill), und für den GAMES-Desktop funktioniert es einfach mit demselben Code Zeilen als Desktop 2

Hier der Desktop 1-Stapel

@echo off  taskkill /IM rainmeter.exe /F  dir && echo off  D:\Downloads\win-10-virtual-desktop-enhancer-master\msgbox\msgboxRAINCLOSED.vbs 

Und ich verstehe nicht, warum einer arbeitet und die anderen nicht. Ich habe verschiedene Trennungsbefehle ausprobiert (&, &&, dir & echo aus, dir && echo aus), aber niemand kann beide Befehle gleichzeitig ausführen.

Die 3 Desktops, wenn ich den Enhancer tatsächlich starte

Ich hoffe, das alles ist umfassend und ich danke Ihnen für jede Hilfe, die Sie leisten können: D

0
Lol. Keine Beleidigung, aber es ist nicht sehr "verständlich". Was versuchen Sie mit "dir && echo off" zu erreichen? Was auch immer es ist, es tut absolut nichts. Wenn Sie ein Programm direkt in einer Batchdatei ausführen, wird die Ausführung der Batchdatei angehalten, bis das Programm beendet wird. Wenn Sie nicht auf das Beenden des Programms warten möchten, müssen Sie den Befehl mit "start" voranstellen. dh `c: \ program files \ rainmeter \ rainmeter.exe 'starten. Ich verstehe wirklich nicht, was Sie erreichen wollen, aber ich nehme an, dass dies erklärt, warum Sie erfahren, was Sie beschreiben. Appleoddity vor 5 Jahren 4
Vielen Dank für Ihre Antwort. Ich versuche das zu klären. Ich versuche nur, dass die Desktops ein wenig "personalisierter" werden und mich mit Codierungssachen ausbilden. Ich möchte genau das, was ich machen möchte In diesem Fall, um Dateien, Rainmeter dann die Popup-Box (später würde ich später Steam oder Discord durch den Wechsel zum GAMES-Desktop starten) XL909 vor 5 Jahren 3
Über "dir && echo off" habe ich es irgendwo gefunden, wo darauf hingewiesen wurde, dass ein Befehl ausgeführt werden soll, nachdem der vorherige ausgeführt wurde. Ich habe das entsprechende "command1 && command2" gefunden, aber es funktioniert nicht. Ich versuche es mit Startbefehl, aber ich verstehe nicht, warum es auf dem einen und auf dem anderen nicht funktioniert XL909 vor 5 Jahren 3
Es funktioniert auf einem und nicht auf dem anderen, weil die Reihenfolge der Befehle unterschiedlich ist. Wie bereits erwähnt, wird die Ausführung der Batch-Datei solange beendet, bis Sie das von Ihnen gestartete Programm beenden, es sei denn, Sie verwenden "start". Die einzige Möglichkeit, mit der Ausführung fortzufahren und ein zweites Programm zu starten, besteht darin, das erste mit "start" zu beginnen, damit die Batchdatei nicht auf den Abschluss des Befehls wartet. Appleoddity vor 5 Jahren 3
Seltsam, die beiden Stapel sind genau die gleichen (nur gezieltes Layout und .vsb-Änderungen). Der Startbefehl funktioniert nicht, er kann das Layout nicht mehr laden, wahrscheinlich ein Problem mit der Stelle der Kommas. Es sieht so aus Starten Sie "C: \ Programme \ Rainmeter \ Rainmeter.exe"! LoadLayout "Audio Desktop Layout" XL909 vor 5 Jahren 3
Sie sind eigentlich nicht gleich. Batch führt jeden Befehl nacheinander aus und wartet auf die Rückkehr jedes Befehls, es sei denn, er soll den Befehl außerhalb der Reihenfolge oder in einem anderen Thread ausführen, beispielsweise mit dem Startbefehl. Der Befehl mit Taskkill geht an Taskkill vorbei, da rainmeter.exe beendet wird, sodass der nächste Befehl ausgeführt werden kann. rainmeter.exe wird zwar von den anderen Batchdateien gestartet, wartet also darauf, dass rainmeter beendet wird, bevor Sie fortfahren. Ändern Sie die Zeilen, in denen Sie rainmeter ausführen, in Folgendes: `" "" "C: \ Programme \ Rainmeter \ Rainmeter.exe"! LoadLayout "Audio Desktop Layout" ` shawn vor 5 Jahren 3
"start" ist hartnäckig - Sie sollten vor dem Rest des Befehls leere Anführungszeichen angeben, um sicherzustellen, dass der Befehl nicht als "title" -Argument behandelt wird. shawn vor 5 Jahren 3

0 Antworten auf die Frage