Batch-Erklärungsbedarf
Hallo ich habe eine Batch bekommen mit der Aufgabe sie zu verstehen und im Anschluss zu verändern:
Im unteren Teil des Codes ist ein Vergleich von X%1==X zu sehen, doch wozu dient der Vergleich und woher stammt %1 ?
echo Cheking svn directory...
svn --version --quiet
IF %ERRORLEVEL%==0 GOTO :StartMerge
IF EXIST "N:\Program Files\svn-win32-1.6.1" ( GOTO UseSVN )
echo could not found svn executable.
GOTO ERROR
rem ########################################################################
:UseSVN
echo setting PATH...
set PATH=N:\Program Files\svn-win32-1.6.1;%PATH%
:StartMerge
echo starting merge...
if "X%1"=="X" (echo usage: svn_merge.bat repository workdirectory datafile & goto ERROR ) ELSE set REPOS=%1
if "X%2"=="X" (echo usage: svn_merge.bat repository workdirectory datafile & goto ERROR ) ELSE set WRKDIR=%2
if "X%3"=="X" (echo usage: svn_merge.bat repository workdirectory datafile & goto ERROR ) ELSE set DATAFILE=%3
Im unteren Teil des Codes ist ein Vergleich von X%1==X zu sehen, doch wozu dient der Vergleich und woher stammt %1 ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115883
Url: https://administrator.de/forum/batch-erklaerungsbedarf-115883.html
Ausgedruckt am: 05.04.2025 um 07:04 Uhr
11 Kommentare
Neuester Kommentar
Moin Pantherstyle,
die drei Prüfungen unten dienen nur dazu festzustellen, ob die Batchdatei auch mit DREI (nicht keinem, nicht einem, nicht nur zwei) Paramtern aufgerufen wird.
Denn es MÜSSEN, wie auch in der Fehlermeldung steht
--> 3 Parameter an/mitgegeben werden
--> [%1=repository, %2= workdirectory; %3=datafile] sind Pflicht- und keine optionalen Parameter
Grüße
Biber
die drei Prüfungen unten dienen nur dazu festzustellen, ob die Batchdatei auch mit DREI (nicht keinem, nicht einem, nicht nur zwei) Paramtern aufgerufen wird.
Denn es MÜSSEN, wie auch in der Fehlermeldung steht
.... repository workdirectory datafile
--> 3 Parameter an/mitgegeben werden
--> [%1=repository, %2= workdirectory; %3=datafile] sind Pflicht- und keine optionalen Parameter
Grüße
Biber

Zitat von @Pantherstyle:
Nur woher werden denn die ANgaben für die 3 Positionen
hergenommen? Bzw wie werden %1-3 belegt?
Servus,Nur woher werden denn die ANgaben für die 3 Positionen
hergenommen? Bzw wie werden %1-3 belegt?
"das" erklärt dir dann sicherlich jemand, dem du Hallo und Danke sagst.
Gruß
Das sind Kommandoparameter, wenn du in der Kommandozeile die Datei aufrufst, kannst du Paramter übergeben so wie bei den Kommadobefehlen von Windows:
Beispiel Befehl dir ==> der zeigt dir das aktuelle Verzeichnis
dir /s ==> zeigt dir das aktuelle und alle Unterverzeichnisse
/s ist somit %1
die paramter werden nach dem Befehl mit Leerzeichnen eingegeben: Befehl LEER %1 LEER %2 LEER %3
Beispiel Befehl dir ==> der zeigt dir das aktuelle Verzeichnis
dir /s ==> zeigt dir das aktuelle und alle Unterverzeichnisse
/s ist somit %1
die paramter werden nach dem Befehl mit Leerzeichnen eingegeben: Befehl LEER %1 LEER %2 LEER %3

Servus,
der link diente dazu, dir begreiflich zu machen, warum ich so nett bin
Und da du deine Antwort wohl ausschliesslich nach der Überschrift des verlinkten Artiels verfasst hast - scheint mir mein anderes Vorurteil - liesst eh keiner - siehe Text im verlinkten Artikel - war keines.
Und nichts freut mich mehr, als widerlegt zu werden
(edit -speziell in diesem Fall /edit)
Du, bitte nicht so, weil dann komme ich dir mit dem gleichen O-Ton - wen der link den ich dir geschrieben habe zu unwichtig zum lesen ist - bla bla - auf das Niveau wollte ich eigentlich nicht.
Und ja - parameter werden angehängt. Siehe Text vom Biber
btw: es wäre auch tatsächlich "Heute" dein erster Text gewesen, wenn du es so genau wissen möchtest - ein Hallo hätte also laut deiner Aussage grade noch so gepasst
Gruß
der link diente dazu, dir begreiflich zu machen, warum ich so nett bin
Und da du deine Antwort wohl ausschliesslich nach der Überschrift des verlinkten Artiels verfasst hast - scheint mir mein anderes Vorurteil - liesst eh keiner - siehe Text im verlinkten Artikel - war keines.
Und nichts freut mich mehr, als widerlegt zu werden
meine Frage zu unwichtig ist, dann werde ich das Forum nicht mehr belästigen..
Du, bitte nicht so, weil dann komme ich dir mit dem gleichen O-Ton - wen der link den ich dir geschrieben habe zu unwichtig zum lesen ist - bla bla - auf das Niveau wollte ich eigentlich nicht.
Und ja - parameter werden angehängt. Siehe Text vom Biber
btw: es wäre auch tatsächlich "Heute" dein erster Text gewesen, wenn du es so genau wissen möchtest - ein Hallo hätte also laut deiner Aussage grade noch so gepasst
Gruß

Beispiel.cmd
if not "%1"=="" if not "%2"=="" if not "%3"=="" echo Parameter 1=%1-Parameter 2=%2-Parameter 3=%3
schreib das in eine bat / cmd und starte es aus einer Dosbox, Dosshell oder in einer MS-DOS-Eingabeaufforderung mit test 1 2 3 oder anderen 3 mit leerzeichen getrennten Buchstaben / Wörtern.
Gruß
Hallo Panther,
willkommen erstmal im Forum.
[korrekter Aufruf der Datei]
genau so. Oder halt die direkte Variante: C:\Arbeitskopie\trunk\Daten\SoftwarePaket\svn_merge.bat \%1 \%2 \%3
Im Code siehst du übrigens gleich dreifach, wie der Aufruf aussehen muß: usage: svn_merge.bat repository workdirectory datafile
In Zeile 17 wird geprüft, ob das erste Argument vorhanden ist wenn ja, wird mit dem Wert die Variable REPOS belegt, falls nicht, wird die obige Info über den korrekten Aufruf des Batches ausgegeben. In Zeile 19 wird überprüft, ob ein zweites, in Zeile 21, ob auch ein drittes Argument vorhanden ist und die Variablen entsprechend belegt.
geTuemII
willkommen erstmal im Forum.
[korrekter Aufruf der Datei]
cd C:\Arbeitskopie\trunk\Daten\SoftwarePaket
svn_merge.bat \%1 \%2 \%3
svn_merge.bat \%1 \%2 \%3
genau so. Oder halt die direkte Variante: C:\Arbeitskopie\trunk\Daten\SoftwarePaket\svn_merge.bat \%1 \%2 \%3
Im Code siehst du übrigens gleich dreifach, wie der Aufruf aussehen muß: usage: svn_merge.bat repository workdirectory datafile
In Zeile 17 wird geprüft, ob das erste Argument vorhanden ist wenn ja, wird mit dem Wert die Variable REPOS belegt, falls nicht, wird die obige Info über den korrekten Aufruf des Batches ausgegeben. In Zeile 19 wird überprüft, ob ein zweites, in Zeile 21, ob auch ein drittes Argument vorhanden ist und die Variablen entsprechend belegt.
geTuemII