Prozent1 und so weiter, Frage...
Hallo zusammen.
%1 kann man leider nicht als Überschrift einsetzen...
Ich muss diese Frage jetzt stellen, obwohl ihr Profis darüber nur gähnen werdet...
Ich bin auch nicht zu faul zum Suchen, ... oder lesen...
Habe mittlerweile zwei gute Batch-Bücher, sehr viel ausgedruckt und gelesen, ... und mir den Wolf gegoogelt...
Nirgendwo wird mit "Äpfeln und Birnen" verständlich erklärt, wie diese Ersatz-Parameter, oder wie sie heißen, funktionieren...
Ich hoffe hier schafft es jemand, ... das würde mich (und sicherlich viele andere) entscheidend weiter bringen...
Das weiß ich von meiner Sucherei...
Für viele Antworten wäre ich dankbar...
LG nistra
%1 kann man leider nicht als Überschrift einsetzen...
Ich muss diese Frage jetzt stellen, obwohl ihr Profis darüber nur gähnen werdet...
Ich bin auch nicht zu faul zum Suchen, ... oder lesen...
Habe mittlerweile zwei gute Batch-Bücher, sehr viel ausgedruckt und gelesen, ... und mir den Wolf gegoogelt...
Nirgendwo wird mit "Äpfeln und Birnen" verständlich erklärt, wie diese Ersatz-Parameter, oder wie sie heißen, funktionieren...
Ich hoffe hier schafft es jemand, ... das würde mich (und sicherlich viele andere) entscheidend weiter bringen...
Das weiß ich von meiner Sucherei...
Für viele Antworten wäre ich dankbar...
LG nistra
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 231326
Url: https://administrator.de/contentid/231326
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
24 Kommentare
Neuester Kommentar
Hallo nistra,
eine ähnliche Frage kam gestern, guckst du hier: Anführungszeichen aus übergebenen Parametern entfernen
Weitere Hilfe dazu liefern dir die Befehle
Grüße Uwe
eine ähnliche Frage kam gestern, guckst du hier: Anführungszeichen aus übergebenen Parametern entfernen
Weitere Hilfe dazu liefern dir die Befehle
set /?
und for /?
auf der Kommandozeile.- http://www.robvanderwoude.com/parameters.php
- http://www.its05.de/computerwissen-computerhilfe/programmierung/stapelv ...
- Unter Punkt 5 hier: http://computer.freepage.de/cgi-bin/feets/freepage_ext/41030x030A/rewri ...
Grüße Uwe
Hallo nistra,
niemand gähnt hier. Die haben alle viel zu viel zu tun
Parameter werden beim Aufruf an den Programmnamen angefügt und mit aufsteigender Reihenfolge als %1, %2, %3 usw. bezeichnet.
Beispiel:
Du bildest dir 2 Batch-Dateien:
Datei1: Aufruf.bat
Datei2:Parameter.bat
Beide Dateien liegen im selben Verzeichnins.
Dann startest du die Aufruf.bat und schaust dir das Ergebnis im Eingabefenster an.
Viele Grüsse
Tsuki
niemand gähnt hier. Die haben alle viel zu viel zu tun
Parameter werden beim Aufruf an den Programmnamen angefügt und mit aufsteigender Reihenfolge als %1, %2, %3 usw. bezeichnet.
Beispiel:
Du bildest dir 2 Batch-Dateien:
Datei1: Aufruf.bat
call Parameter.bat "Hallo Welt"
Pause
Echo %1
Dann startest du die Aufruf.bat und schaust dir das Ergebnis im Eingabefenster an.
Viele Grüsse
Tsuki
Moin,
Für fragen zu Batch ist folgende Seite wirklich zu empfehlen:
http://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-komm ...
Speziell zu deiner Frage:
http://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-komm ...
Gruß
Chris
Für fragen zu Batch ist folgende Seite wirklich zu empfehlen:
http://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-komm ...
Speziell zu deiner Frage:
http://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-komm ...
Gruß
Chris
Zitat von @nistra:
@colinardo... Dankeschön, ... alles ausgedruckt, werde ich gleich lesen, ... muss jetzt arbeiten... LG nistra
@colinardo... Dankeschön, ... alles ausgedruckt, werde ich gleich lesen, ... muss jetzt arbeiten... LG nistra
Darf man fragen, warum du das alles ausdruckst?
Zitat von @Snowman25:
> Zitat von @nistra:
>
> @colinardo... Dankeschön, ... alles ausgedruckt, werde ich gleich lesen, ... muss jetzt arbeiten... LG nistra
Darf man fragen, warum du das alles ausdruckst?
> Zitat von @nistra:
>
> @colinardo... Dankeschön, ... alles ausgedruckt, werde ich gleich lesen, ... muss jetzt arbeiten... LG nistra
Darf man fragen, warum du das alles ausdruckst?
Damit man die Befehle besser "kopieren" kann :P
lg ;)
Moin nistra,
Mit "kopieren" bekommst du unter Umständen einen (befristeten) Doktortitel, aber keinen Batch zum Fliegen.
Es bringt nichts, hier Fragen zu stellen und dann zu schreiben "Danke für die Antworten, ich schau die mir irgendwann an einem Regentag an."
Grüße
Biber
P.S. Heute wäre ein Regentag...
> Darf man fragen, warum du das alles ausdruckst?
Damit man die Befehle besser "kopieren" kann :P
Umweltschonender wäre es, die Befehler einmal zu verstehen.Damit man die Befehle besser "kopieren" kann :P
Mit "kopieren" bekommst du unter Umständen einen (befristeten) Doktortitel, aber keinen Batch zum Fliegen.
Es bringt nichts, hier Fragen zu stellen und dann zu schreiben "Danke für die Antworten, ich schau die mir irgendwann an einem Regentag an."
Grüße
Biber
P.S. Heute wäre ein Regentag...
Ok dann fehlen dir doch so ziemlich die Grundlagen zur Variablenverwendung in Batch:
Dann bin ich mal gnädig, weil heute Samstag ist
Ausgabe
normale Variablen werden mit Prozentzeichen umschlossen, um sie auszugeben.
Die speziellen Parametervariablen %1, %2, %3, usw.. beziehen sich nur auf das was du beim Aufruf einer Batchdatei hinten dran hängst.
Hoffe das war jetzt verständlich
Grüße Uwe
Dann bin ich mal gnädig, weil heute Samstag ist
@echo off
set a=das
set b=ist
set c=ein
set d=test
echo %a% %b% %c% %d%
pause
das ist ein test
Die speziellen Parametervariablen %1, %2, %3, usw.. beziehen sich nur auf das was du beim Aufruf einer Batchdatei hinten dran hängst.
deineBatch.bat "Parameter1" "Parameter2"
%1
würde im Beispiel dann zu Parameter1 und %2
zu Parameter2 usw. aufgelöst.Hoffe das war jetzt verständlich
Grüße Uwe
Moin nistra,
ergänzend zu colinardos Erklärung noch ein Batch (ausgehend von deiner Vorlage) zur Verdeutlichung.
Grüße
Biber
ergänzend zu colinardos Erklärung noch ein Batch (ausgehend von deiner Vorlage) zur Verdeutlichung.
:: Parametertest.cmd
@echo off
:: Falls keine Parameter gehe zu :Sprungmarke
If "%*" NEQ "" goto :showParameter %*
Echo keine Parameter ...setze a, b, c, d
set a=das
set b=ist
set c=ein
set d=test
echo rufe diesen batch mit 5 Parametern auf und komm wieder
call "%~f0" %a% %b% %c% %d% SelbstaufrufMitCall
@echo bin wieder da...
echo ruf diesen batch mit 6 Parametern auf und komm nicht wieder
IF "%6"=="UndEnde" goto :exit
"%~0" %a% %b% %c% %d% SelbstaufrufOhneCall UndEnde
:showParameter
echo In :showparameter 1: %1 2:%2 3:%3 4:%4 5:%5 6: %6
pause
Grüße
Biber
Zitat von @nistra:
Wenn ich an die test.bat, dollar euro dmark anhänge, ... dann wird aus der bat eine Textdatei... und nichts funktioniert...
Kann mir das jemand erklären...
du benennst die Datei nicht um, sondern schreibst die Parameter in einer Kommandozeile (zum Öffnen einer Konsole: WIN+R drücken und cmd eingeben) hinter den Namen deiner Batchdatei (vorher natürlich in das Verzeichnis deiner Batchdatei wechseln, oder den Pfad zu Ihr mit angeben):Wenn ich an die test.bat, dollar euro dmark anhänge, ... dann wird aus der bat eine Textdatei... und nichts funktioniert...
Kann mir das jemand erklären...
Aber nirgendwo steht geschrieben, dass man die Parameter n u r auf der Konsole (in der Eingabeaufforderung usw. usw. ...) eingeben kann/muss.
das ist ja auch nicht richtig, die Parameter kannst du auch in einer Batch dazu nutzen ein anderes oder das selbe Script mit Parametern aufzurufen, siehe das Script von @Biber weiter oben !Das sind doch Abfragen die in einer batch-Datei stehen...., das muss ich doch nicht auf der Konsole eintippen, ... oder doch?
nein musst du nicht.Die Parameter %1-%9 haben immer den Inhalt der beim Aufruf einer Batchdatei hinter dessen Namen beim Aufruf angegeben wird, egal ob die Batch jetzt durch eine Verknüpfung, durch ein anderes Programm oder eine andere Batchdatei gestartet wird. %0 ist immer der Name inkl. Pfad des Scriptes selber.
moin nistra,
die *.cmd; *.bat; *.vbs; *.exe *.com etc. ...Dateien sind Ausführbare Programme. Als Beispiel in dem Ordner System32 gibt es auch die find.exe.
In der Eingabeaufforderung gibst Du
ein.
Da find ohne Parameter aufgerufen wurde aber mindestens einen Parameter erwartet erscheint eine Meldung. In diesem Fall eine Fehlermeldung (mit Großbuchstaben):
Den meisten Programmen wird eine KommandozeilenHilfe beigefügt, welche mit
aufgerufen wird.
Hier der Befehl:
wobei Slash Fragezeichen der erste übergebene Parameter ist. Daher ist es auch ein Übergabeparameter.
als Ausgabe bekommst Du nun:
an.
In der/n ersten Zeile(n) der Hilfe steht, was das Programm macht.
im Zweiten Abschnitt ist die Befehlssyntax aufgeführt. Wieviele Parameter Übergeben werden können bzw. müssen.
Übergabeparameter in [umschließenden eckigen Klammern] können mitgegeben werden (als die Einstellschrauben).
Übergabeparameter ohne umschließende eckige Klammern müssen mitgegeben werden.
Im dritten Abschnitt wird die Funktion der einzelnen Parameter erläutert.
Wenn die Batch/CMD mit Parameter(n) aufgerufen wird, werden diese als %1 ; %2 ; %3 ... und insgesamt als %* angezeigt.
So kann innerhalb einer Batch eine Abfrage auf Gültige Parameter geprüft werden oder es können sonstige Aktionen mit den Parametern vollzogen werden.
Eine Beispieldatei mit der Verwendung mit Parametern übergebe ich Hier "als Parameter".
[Edit]
eine Datei auf eine Batch/CMD/exe gezogen ist auch ein Parameter und wird entsprechend so ausgewertet.
Damit diese Dateien nacheinander verarbeitet werden bedient man sich des Befehls shift
[/Edit]
Gruß Phil
die *.cmd; *.bat; *.vbs; *.exe *.com etc. ...Dateien sind Ausführbare Programme. Als Beispiel in dem Ordner System32 gibt es auch die find.exe.
In der Eingabeaufforderung gibst Du
Find
Da find ohne Parameter aufgerufen wurde aber mindestens einen Parameter erwartet erscheint eine Meldung. In diesem Fall eine Fehlermeldung (mit Großbuchstaben):
FIND: Parameterformat Falsch
help Programmname
Programmname /?
oder
Programmname -h
Hier der Befehl:
find /?
als Ausgabe bekommst Du nun:
Sucht in einer oder mehreren Dateien nach einer Zeichenfolge.
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]]"Zeichenfolge"
[[Laufwerk:][Pfad]Dateiname[ ...]]
/V Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.
/C Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.
/N Zeigt die Zeilen mit ihren Zeilennummern an.
/I Ignoriert Groß-/Kleinschreibung bei der Suche.
/OFF[LINE] Überspringt keine Offlinedateien.
"Zeichenfolge" Die zu suchende Zeichenfolge
[Laufwerk:][Pfad]Dateiname Zu durchsuchende Datei(en)
Fehlt der Pfad, so durchsucht FIND von der Tastatur aus eingegebenen Text oder
die Ausgabe des Befehls, der FIND in einer Befehlskette vorangestellt ist.
In der/n ersten Zeile(n) der Hilfe steht, was das Programm macht.
im Zweiten Abschnitt ist die Befehlssyntax aufgeführt. Wieviele Parameter Übergeben werden können bzw. müssen.
Übergabeparameter in [umschließenden eckigen Klammern] können mitgegeben werden (als die Einstellschrauben).
Übergabeparameter ohne umschließende eckige Klammern müssen mitgegeben werden.
Im dritten Abschnitt wird die Funktion der einzelnen Parameter erläutert.
Wenn die Batch/CMD mit Parameter(n) aufgerufen wird, werden diese als %1 ; %2 ; %3 ... und insgesamt als %* angezeigt.
So kann innerhalb einer Batch eine Abfrage auf Gültige Parameter geprüft werden oder es können sonstige Aktionen mit den Parametern vollzogen werden.
Eine Beispieldatei mit der Verwendung mit Parametern übergebe ich Hier "als Parameter".
[Edit]
eine Datei auf eine Batch/CMD/exe gezogen ist auch ein Parameter und wird entsprechend so ausgewertet.
Damit diese Dateien nacheinander verarbeitet werden bedient man sich des Befehls shift
[/Edit]
Gruß Phil
Hey nistra,
ich hab noch eine Buchempfehlung:
The Windows Command Line Beginner's Guide - Second Edition
Gruss, Endoro.
ich hab noch eine Buchempfehlung:
The Windows Command Line Beginner's Guide - Second Edition
Gruss, Endoro.
Moin nistra,
Ja , möglich ist es auch.
Aber es macht nicht viel Sinn, einen Batch mit den Parameter parameter1, parameter2, parameter3 aufzurufen, wenn dieser sich dann selbst aufruft mit den bei ihm angekommenen Parametern %1 %2 %3...
Derartige Tätigkeiten waren selbst bis zum Ende des letzten Jahrhunderts ausschliesslich für so genannte ABM-Kräfte zulässig und sind laut Genfer Konvention für wehrlose Klein-Bätche verboten.
Den "Selbstaufruf" hatte ich nur eingebaut, weil ich nur einen Demo-Batch schreiben wollte, der logisch gesehen aus zwei Batch-Dateien besteht:
a) ein logischer Batch, der auf Parameter reagiert und anzeigt, welche bei ihm als %1, %2 %3 ankommen
b) ein logischer Batch, der ein paar Testfälle zum "Aufrufen eines Batches mit ein paar Parametern" durchnudelt.
Ich habe es in einer Datei zusammengefasst, damit es "auf einen Blick" bzw in einem Editor nachvollziehbar bleibt.
Sorry, wenn ich damit verwirrt haben sollte.
Grüße
Biber
Zitat von @nistra:
Was ich von Biber noch nicht verstanden habe, ... ist der Selbstaufruf der Batch-Datei, ... darin müsste es doch möglich
sein, die %1 etc. zu nutzen...
Was ich von Biber noch nicht verstanden habe, ... ist der Selbstaufruf der Batch-Datei, ... darin müsste es doch möglich
sein, die %1 etc. zu nutzen...
Ja , möglich ist es auch.
Aber es macht nicht viel Sinn, einen Batch mit den Parameter parameter1, parameter2, parameter3 aufzurufen, wenn dieser sich dann selbst aufruft mit den bei ihm angekommenen Parametern %1 %2 %3...
Derartige Tätigkeiten waren selbst bis zum Ende des letzten Jahrhunderts ausschliesslich für so genannte ABM-Kräfte zulässig und sind laut Genfer Konvention für wehrlose Klein-Bätche verboten.
Den "Selbstaufruf" hatte ich nur eingebaut, weil ich nur einen Demo-Batch schreiben wollte, der logisch gesehen aus zwei Batch-Dateien besteht:
a) ein logischer Batch, der auf Parameter reagiert und anzeigt, welche bei ihm als %1, %2 %3 ankommen
b) ein logischer Batch, der ein paar Testfälle zum "Aufrufen eines Batches mit ein paar Parametern" durchnudelt.
Ich habe es in einer Datei zusammengefasst, damit es "auf einen Blick" bzw in einem Editor nachvollziehbar bleibt.
Sorry, wenn ich damit verwirrt haben sollte.
Grüße
Biber