• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[Windows 7] Variable und IF in einer Batchdatei gehen nicht

mayflower

Neu angemeldet

Registriert
13 Jan. 2016
Beiträge
32
Hallo,

ich habe wenig Erfahrung mit Batch, wollte aber in einem Skript erst eine Variable erstellen lassen und diese dann mit if prüfen. Laut einiger Beispielskripte sollte es so gehen:

[src=text]set var=1
IF "%var%" == "1" echo RICHTIG
pause[/src]

Es geht aber nicht. Trotz den "pause" verschwindet das Fenster gleich wieder, ich glaube dort Syntaxfehler erkannt zu haben. Das ist aber unlogisch, ich habe diese Bsp. in einigen Skripten gefunden. Ich weiß nicht was hier falsch sein soll. Ich hab auch alle Möglichen Abwandlungen mit ud ohne "" versucht - nichts geht. Wo liegt der Fehler?

mayflower
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.751
Ort
in der Zukunft
Servus mayflower,

zum einen solltest du dir eine cmd-box aufmachen, in das Verzeichnis der .bat gehen und dort einfach dann test.bat (oder ähnlich) aufrufen.
Dann bleibt das Fenster auch offen und du siehst den Fehler ;)

Korrekt ist:
[src=bash]@echo off
set var=1
IF %var% == 1 echo RICHTIG
pause[/src]

das @echo off steht da nur das er das Script beim ausführen auf der Befehlszeile wie oben angeraten nicht noch mal vollständig ausgibt.

"" gibt immer einen festen String an - das heißt du hast bei dir vergleichen ob die Buchstabenfolge (nichts mit Variablen) %var% gleich der Buchstabenfolge 1 entspricht. Die 1 gehört auch nicht in "" da du oben nicht den String 1 sondern die Zahl 1 gespeichert hast.

Aber wenn du nun eh bei 0 anfängst tu dir selber den Gefallen (außer du hast einen Grund der sich nicht Ändern lässt, z.B. Auftrag von Schule oder Arbeit) und lass das mit BATCH sein und lerne Powershell ...
Batch ist ein ca. 20 Jahre altes relikt das man gerne sterben lassen darf ;D
 

mayflower

Neu angemeldet

Registriert
13 Jan. 2016
Beiträge
32
  • Thread Starter Thread Starter
  • #3
Danke, so gehts.

Ich wollte das ganze jetzt noch etwas abhängern indem ich durch if und else zwischen 2 Kommandozeilen unterscheide. Das ganze sollte so aussehen:

if %var% == 1 ( commandline1 ) else ( commandline2 )

Die auszuführende Kommandozeile ist eine die ich durch MKVMergeGUI habe erstellen lassen. Der Unterschied zwischen den beiden Zeilen ist das vorhandensein oder fehlen von bestimmten Audio- und Untertitelstreams. Leider geht das so nicht. Ich erhalte die Meldung

"bad/Staffel" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Das ist Teil des Output-Pfades "e:/breaking bad/staffel 1", also mit einem Leerzeichen drin. Was muss ich denn ändern, damit die Kommandozeile so ausgeführt wird wie sie dasteht? Sämtliche Pfade innerhalb der Kommandozeile stehen schon in "", die laufen auch außerhalb von if problemlos.
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.751
Ort
in der Zukunft
Dazu bräuchte ich schon das gesamte Script... und was warum willst du noch immer unbedingt Batch? ;D
 

mayflower

Neu angemeldet

Registriert
13 Jan. 2016
Beiträge
32
  • Thread Starter Thread Starter
  • #5
if %var% == 1 ( mkvmerge ^"--ui-language^" ^"de^" ^"--output^" ^"E:/breaking bad/Staffel %staffel%/akte.x.s0%staffel%e0%folge1%.mkv^" ^"--language^" ^"0:eng^" ^"--default-track^" ^"0:yes^" ( ^"01-neu.mkv^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:Deutsch^" ^"--default-track^" ^"0:yes^" ^"--forced-track^" ^"0:yes^" ( ^"01-deutsch.m4a^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:deutsch^" ^"--default-track^" ^"0:yes^" ^"--forced-track^" ^"0:yes^" ( ^"01-df.idx^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:deutsch^" ^"--default-track^" ^"0:no^" ( ^"01-dn.idx^" ) ^"--language^" ^"0:eng^" ^"--track-name^" ^"0:englisch^" ^"--default-track^" ^"0:no^" ( ^"01-eh.idx^" ) ^"--no-audio^" ^"--no-video^" ^"--no-subtitles^" ( ^"title01.mkv^" ) ^"--language^" ^"0:eng^" ^"--track-name^" ^"0:Englisch^" ^"--default-track^" ^"0:no^" ( ^"01-englisch.m4a^" ) ^"--split^" ^"frames:%schnitt1%^" ^"--title^" ^"^" ^"--track-order^" ^"0:0,1:0,6:0,2:0,3:0,4:0^" ) else ( mkvmerge ^"--ui-language^" ^"de^" ^"--output^" ^"E:/breaking bad/Staffel %staffel%/akte.x.s0%staffel%e0%folge1%.mkv^" ^"--language^" ^"0:eng^" ^"--default-track^" ^"0:yes^" ( ^"01-neu.mkv^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:Deutsch^" ^"--default-track^" ^"0:yes^" ^"--forced-track^" ^"0:yes^" ( ^"01-deutsch.m4a^" ) ^"--language^" ^"0:eng^" ^"--track-name^" ^"0:Englisch^" ^"--default-track^" ^"0:no^" ( ^"01-englisch.m4a^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:dummy^" ^"--default-track^" ^"0:yes^" ^"--forced-track^" ^"0:yes^" ( ^"dummy.srt^" ) ^"--language^" ^"0:ger^" ^"--track-name^" ^"0:deutsch^" ^"--default-track^" ^"0:no^" ( ^"01-dn.idx^" ) ^"--language^" ^"0:eng^" ^"--track-name^" ^"0:englisch^" ^"--default-track^" ^"0:no^" ( ^"01-eh.idx^" ) ^"--no-audio^" ^"--no-video^" ^"--no-subtitles^" ( ^"title01.mkv^" ) ^"--split^" ^"frames:%schnitt1%^" ^"--title^" ^"^" ^"--track-order^" ^"0:0,1:0,2:0,3:0,4:0,5:0^" )

und was warum willst du noch immer unbedingt Batch?

Was sollte ich denn sonst wollen? Ich kann kein Powershell. Alle Programme geben ihre Kommandozeilen weiterhin als Batchdatei aus und die laufen problemlos.
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.751
Ort
in der Zukunft
Du hattest ja geschrieben du lernst erst - und wenn man anfängt was zu lernen dann halt normal was aktuelles.
Die GUI gibt ja scheinbar nichts sinnvolles aus - jedenfalls denke ich nicht das der Befehl so wie du ihn gepostet hast ohne if %var% ... funktioniert.
Die ganzen klammern und ^zeichen kommen mir sehr Komisch vor.

Da macht es halt mehr Sinn sich die Anleitung des tool mkvmerge anzuschauen und die Commandline selber zusammen zu bauen und zu wissen was man tut.

Da wird irgendwas ge-escaped aber tut mir leid so ergibt für mich das gesamte ding keinen Sinn - mich wundert nur nicht sonderlich das es nicht funktioniert.
Nur kenne ich mkvmerge nicht und möchte es nun auch nicht lernen ;)

Es müssen / sollten nur Strings in "" die leerzeichen enthalten können - Befehle / Parameter gehören nicht in ""
 

mayflower

Neu angemeldet

Registriert
13 Jan. 2016
Beiträge
32
  • Thread Starter Thread Starter
  • #7
Die Kommandozeilen von MKVMerge sind sehr komplex wenn man mehrere Streams einfügt (wie man oben sieht9. Das ist aber auch nicht das Problem: Die MKVMerge-Kommandozeile geht problemlos wenn ich sie alleine ausführe, es gibt nur Probleme wenn ich sie innerhalb dieser IF-Kommandozeile verwende. Jetzt mal unabhängig davon wie die MKVMerge-CLI aussieht: Es muss doch eine Möglichkeit zu sagen "wenn Variable1 = 1 dann führe Kommandozeile 1 aus, wenn Variable1 = 2 dann führe Kommandozeile 2 aus". Egal ob da Leerzeichen oder was weiß ich drin sind. Die Kommandozeilen alleine funktionieren ja wie schon gesagt.
 

Mephisto

Gefährlich

Registriert
16 Juli 2013
Beiträge
72
Ort
127.0.0.1
ohne das ganze jetzt getestet zu haben...ich vermute das die Klammern das Problem sind. Diese werden vermutlich im Zusammenhang mit IF falsch interpretiert.
man kann Klammern benutzen um Blöcke zu bilden z.B.:

If [Bedingung] (
[Komando1]
[Komando2]
[Komando3]
)

Bei einem so komplexen Aufruf würde ich sagen trenne den abfrage vom Aufruf. Spring entweder zu einer bestimmten sprungmarke, ruf das als sub-script auf oder starte die Application über eine 2. Batch. Hauptsache du trennst deine IF-Abfrage von diesem ganzen Parmetern.
 
Oben