Batchdateien (.bat) ... Was bedeutet Set =% 1%? Diese Batchdatei funktioniert nicht richtig

1417
HellfireEternal

Diese Batchdatei soll der Variablen "game" den Pfad einer Disc-Image-Datei zuweisen und dann dieses Image mit einem Programmaufruf von Daemon Tool mounten. Dann soll ein Programm namens SSF das gemountete Disk-Image laden.

Leider lädt diese Batchdatei nur das bereits gemountete Image. Ich versuche, jede Zeile in dieser Datei zu verstehen, und ich kann keine Hilfe mit der Zeile finden .... set game =% 1% .... Ich verstehe, dass dem Spiel eine Variable zugewiesen wird, aber was ist die Variable? Hier ist der Inhalt der Batchdatei. Vielen Dank für Ihre Hilfe.

@echo off set game=%1%  set daemon="C:\Program-blahblah-\DTLite.exe"  set emu="C:\Users-blahblah-\SSF_TestVer\SSF.exe"  %daemon% -mount 0, %game%  start /wait "" %emu%  %daemon% -unmount 0  
1
Bei dieser Frage geht es also darum, dass Sie möchten, dass der Dämon funktioniert und nicht eine andere Lösung, richtig? Ich gehe davon aus, dass Sie gerade nicht nach einer Antwort suchen, sondern mit einer anderen vorgeschlagenen Lösung anstelle des Daemons, richtig? Das ist meine Interpretation, ich möchte nur hören, ob Sie etwas anderes bestätigen oder erklären, nur für den Fall. Pimp Juice IT vor 6 Jahren 0
Ich habe die .bat aber funktioniert. Gibt es einen Befehl zum Schließen des Fensters UND Ausführen des Codes zum gleichzeitigen Starten von% emu%? Es funktioniert großartig, aber wenn ich das Fenster von alleine schließen könnte, anstatt das Programm% emu% zu schließen, wäre es PERFEKT! Vielen Dank! HellfireEternal vor 6 Jahren 0
Setzen Sie am Anfang des Skripts 'IF NOT DEFINED MINIMIZED SET MINIMIZED = 1 && START "" / MIN "% ~ dpnx0"% * && EXIT "und führen Sie es erneut aus, um zu sehen, ob dies hilfreich ist. Siehe [meine Antwort hier] (https://superuser.com/questions/1225455/how-to-make-an-error-message-in-a-batch-script-if-the-target-isnt-present/1225769 # 1225769) mit dieser Lösung und einer Beschreibung. Pimp Juice IT vor 6 Jahren 0
Andernfalls sollten Sie dies mit Task Scheduler ausführen, um das Skript mit der Option "Mit höchsten Berechtigungen ausführen" auszuführen. Siehe [meine Antwort hier] (https://superuser.com/questions/1285057/make-executing-cmd-window-show-hen-it-is-ran-by-a-task-scheduler/1285240#1285240), aber Sie könnten so weit gehen, dass Sie möglicherweise die Methode `SCHTASKS / Run / TN" \ path \ JobName "` ausführen. Es gibt einige Ansatzpunkte für Sie, mit denen ich zumindest schnell nachdenken kann, aber ich habe Quellen ** meine Antworten ** mit mehr anwendbaren Details zur Verfügung gestellt. Pimp Juice IT vor 6 Jahren 0

1 Antwort auf die Frage

1
barlop

Ich denke, das %1%ist ein Fehler und sollte es sein, %1und Sie sollten die Batch-Datei mit einem Parameter wie dem Namen des Spiels ausführen. zB C:\blah>thebatfile thegameDas wird sein, was %1den ersten Parameter auf, dh bezieht. Sie können eine beliebige Variable anzeigen mit echo %whatevervar%oder echo %1und echo %daemon% Und Sie können die entfernen @ECHO OFFLinie, so dass Sie mehr sehen, was los ist. Sie können dies jederzeit in der Batch-Datei tun pause(beim Ausführen wird es nach einer Zeile angehalten und Sie können Strg-C zum Beenden ausführen), oder Sie können eine Zeile mit der Meldung versuchen, exit /b die Batch-Datei vorzeitig zu beenden .

Ich denke, das könnte Ihre Frage zu% 1 beantworten, aber es hilft Ihnen nicht weiter, als Ihre Frage zu beantworten. Über Ihre Frage hinausgehen - Woher bekommen Sie diese Batch-Datei? Möglicherweise gibt es verschiedene Probleme, die von den Besonderheiten der ausführbaren Dateien abhängen, die Sie beim Ausführen unterstützen.

Sie sollten besser auf Daemon-Tools verzichten. Zu einer Zeit war es jahrelang eine großartige Software, aber dann fügten sie Malware hinzu http://forum.daemon-tools.cc/showthread.php?t=30115 und https://www.reddit.com/r/ pcmasterrace / comments / 2yt9gb / be_aware_daemon_tools_lite_installs_malware_adware / Ich schlage vor, dass Sie stattdessen ein virtuelles Clonedrive verwenden.

Wenn Sie ein Bild mounten möchten, müssen Sie es zuerst ohne Batchdatei tun. Um das Spiel zu starten, starten Sie das Bild, sobald das Bild eingehängt ist, ohne eine Batch-Datei.

Wenn Sie dies manuell tun können, können Sie es mit einer Batchdatei versuchen.

Ich habe diese Batchdatei aus den Foren des Programms erhalten, das ich verwende. Es heißt Launchbox, es ist ein Frontend für Emulatoren. Es ist eine GUI, in der Sie mehrere Spieldateien ablegen und die Programme auswählen, mit denen die Spiele gestartet werden sollen. Es funktioniert großartig, aber dieser Emulator, SSF, kann Image-Dateien nicht alleine lesen. Sie müssen stattdessen von einem CD-Laufwerk (oder einem virtuellen Laufwerk) gelesen werden. Und hier beginnt das Thema. HellfireEternal vor 6 Jahren 0
@HellfireEternal Ja, aber Sie benötigen keine Batchdatei, um diese Dinge auszuführen. Sie können ein Bild manuell einhängen. Sie können den Emulator auch manuell starten. Alles, was eine Batchdatei tun kann, kann manuell ausgeführt werden. Einige alte Programme benötigen zum Beispiel eine CD im Laufwerk oder wie in Ihrem Fall das Einhängen eines ISO, damit ein CD-Laufwerk angezeigt wird. Dies kann manuell geschehen. barlop vor 6 Jahren 0
Ich habe diese Batchdatei aus den Foren des Programms erhalten, das ich verwende. Es heißt Launchbox, es ist ein Frontend für Emulatoren. Es ist eine GUI, in der Sie mehrere Spieldateien ablegen und die Programme auswählen, mit denen die Spiele gestartet werden sollen. Es funktioniert großartig, aber dieser Emulator, SSF, kann Image-Dateien nicht alleine lesen. Sie müssen stattdessen von einem CD-Laufwerk (oder einem virtuellen Laufwerk) gelesen werden. Und hier beginnt das Thema. Ich ging davon aus, dass der festgelegte Spielanteil von% 1% den Dateipfad von Launchbox abholte. Das Problem mit der Batchdatei scheint darin zu liegen, den Dateipfad der Image-Datei abzurufen. Irgendwelche Ideen? HellfireEternal vor 6 Jahren 0
Ich denke, das Spiel ist das ISO. Sie montieren das Spiel. Dann führen Sie den Emulator aus. barlop vor 6 Jahren 0
Der Link lautet https://forums.launchbox-app.com/topic/32800-ssf-auto-mountunmount-with-xpadder-command-lines/, falls dies hilfreich ist HellfireEternal vor 6 Jahren 0
@HellfireEternal der Typ, der die Frage an diesem Link stellt, sagt, dass er Dinge manuell einhängen kann und er nur versucht, sie zu automatisieren. Sie haben nicht einmal gezeigt, dass Sie es manuell einhängen können. Wie gesagt ... Sie sollten es manuell versuchen, bevor Sie eine Batchdatei erstellen. barlop vor 6 Jahren 0
Ja, ich kann das Bild ganz gut selbst montieren. Das Launchbox-Programm zeigt die Game-Box-Art an und dann klicken Sie auf die Box-Art und das Spiel wird mit dem richtigen Programm oder Emulator gestartet. Ich brauche also eine Batch-Datei, um den Montageprozess zu automatisieren, je nachdem auf welches Spiel ich klicken muss. HellfireEternal vor 6 Jahren 0
@HellfireEternal Hier finden Sie Hilfe zur Anwendung mit der jeweiligen App, da Sie wissen, wie dies am besten funktioniert, da Sie das Skript von einem Forum (http: //daemon-help.com/additionally/command /) erhalten haben, das Sie lesen können und testen Sie, bis es funktioniert wie erwartet und Sie können herausfinden, was in Ihrem System funktioniert. Wenn Sie Schwierigkeiten haben, den Prozess auszuführen, da die Syntax als korrekt bestätigt wird, müssen Sie wissen, wie Sie den Prozess ausführen, und es kann sein, dass es etwas auf dieser Ebene ist. Testen Sie die Befehle usw. und machen Sie die Bestätigung zunächst manuell. Pimp Juice IT vor 6 Jahren 0
Vielleicht auch hier: http://daemon-help.com/ aber ich bin mir sicher, dass Sie den Punkt verstehen Pimp Juice IT vor 6 Jahren 0
@PimpJuiceIT Auch daemontools hat eine sehr schöne, einfache GUI, wie die Benutzeroberfläche hauptsächlich die GUI ist, und macht es wirklich einfach, ein ISO zu mounten .. Aus irgendeinem Grund verwendet er das gar nicht. Die meisten Leute benutzen die GUI .. Es ist einfacher als die Befehlszeile zu verwenden, um eine ISO zu laden. Man sollte das wirklich nutzen können und das vor der Kommandozeile verstehen. barlop vor 6 Jahren 0
@barlop Ich glaube, es gibt ein Missverständnis. Ich konnte das Bild mit der Daemontools-GUI mounten, bevor ich diese Frage stelle. Egal, der Befehl echo hat mir geholfen, die Variablen zur Fehlerbehebung zu sehen, die mir geholfen haben, also danke Ihnen! Am Ende bestand das Problem einfach darin, dass ich auf die falsche ausführbare Datei verwies. Die Befehlszeilenargumente müssen an DTagent.exe NOT DTlite.exe übergeben werden. Also hier ist das Endergebnis ... HellfireEternal vor 6 Jahren 0
set game =% 1% set daemon = "C: \ Progr ... Lite \ DTagent.exe" set emu = "C: \ Users \ ... er \ SSF.exe"% Daemon% -mount scsi, R, % game%% emu%% daemon% -Eingang entfernen HellfireEternal vor 6 Jahren 0
@HellfireEternal Ich bin froh, dass es funktioniert hat, aber versuche es mit% 1 anstelle von% 1%. Ich stelle fest, dass% 1% funktionieren kann, aber ich glaube nicht, dass es richtig ist. Versuchen Sie dies wie folgt: Erstellen Sie eine Batchdatei mit der Aufschrift "echo% 1% 2" und "echo% 1%% 2%" und versuchen Sie "echo% 1% 2" im Vergleich zu "echo% 1 %% 2%" Nenne es zwei Parameter, z. B. "blah.bat ab". Die mit% 2 sind in Ordnung. Auch wenn es mit% 1 funktioniert, sollte es immer noch% 1 und nicht% 1% sein, was, wenn es funktioniert, durch Zufall funktioniert. barlop vor 6 Jahren 0