nistra
Goto Top

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

Content-ID: 231326

Url: https://administrator.de/contentid/231326

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

eumel1979
eumel1979 28.02.2014 um 12:57:09 Uhr
Goto Top
Hi,

wo ist denn deine Frage???? Oder lese ich deinen Beitrag schon falsch?


Lg eumel
colinardo
colinardo 28.02.2014 aktualisiert um 13:09:42 Uhr
Goto Top
Hallo nistra,
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.

Grüße Uwe
TsukiSan
TsukiSan 28.02.2014 aktualisiert um 13:06:56 Uhr
Goto Top
Hallo nistra,

niemand gähnt hier. Die haben alle viel zu viel zu tun face-wink

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
Datei2:Parameter.bat
Echo %1
Beide Dateien liegen im selben Verzeichnins.
Dann startest du die Aufruf.bat und schaust dir das Ergebnis im Eingabefenster an.

Viele Grüsse

Tsuki
nistra
nistra 28.02.2014 um 13:31:10 Uhr
Goto Top
Hallo zusammen...

@eumel1979..., ... bin auf deine Erklärung gespannt ... LG nistra..., ... ja, es ist eine Frage...

@colinardo... Dankeschön, ... alles ausgedruckt, werde ich gleich lesen, ... muss jetzt arbeiten... LG nistra

@TsukiSan... auch Dankeschön... (... ich weiß was du meinst, ... und du weißt was ich meine... face-wink) LG nistra

Schreibt einfach weiter (wenn ihr Zeit und/oder Lust habt...), kann ja sein, dass ich wirklich den Wald vor Bäumen nicht sehe...

LG nistra
Sheogorath
Sheogorath 28.02.2014 um 13:51:10 Uhr
Goto Top
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
Endoro
Endoro 28.02.2014 um 15:05:42 Uhr
Goto Top
Hey nistra,
wie heissen deine Batch-Bücher? Ich kann kaum glauben, dass es da was gutes gibt.
Gruss Endoro.
Snowman25
Snowman25 28.02.2014 um 15:15:47 Uhr
Goto Top
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?
ITvortex
ITvortex 28.02.2014 um 15:39:23 Uhr
Goto Top
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?


Damit man die Befehle besser "kopieren" kann :P

lg ;)
Biber
Biber 28.02.2014 aktualisiert um 22:20:03 Uhr
Goto Top
Moin nistra,

Zitat von @ITvortex:

> 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.
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...
nistra
nistra 28.02.2014 um 19:26:19 Uhr
Goto Top
Hallo zusammen...

@ITvortex..., ... danke für den Hinweis, ... vielleicht sollte ich meinem Chef sagen, dass ich nicht arbeiten gehe, ... bin viel lieber hier im Forum...
LG nistra
nistra
nistra 28.02.2014 um 19:35:49 Uhr
Goto Top
Hallo zusammen...

Hallo endoro...

Das erste Buch zum Thema heißt "Batch-Betrieb" von Alois Kneisle, Hanser Verlag, von 1996, gebunden mit CD... ISBN 3-446-18658-1 ...

Das zweite Buch ist auch von Alois Kneisle, heißt "Batch Mal Wieder", Systhema Verlag, von 1993, Hardcover, ISBN 3-89390-444-1 ...

Trotz des Alters konnte ich sie ungelesen kaufen...

@div. Kommentare..., ... ich habe alles augedruckt zum Lesen. ... Und da ich nicht so viel Zeit habe, nehme ich Ausgedrucktes und Bücher immer mit, ... damit ich lesen kann, wenn ich denn mal Zeit habe...
Und wenn ich noch mehr Zeit habe, ... dann tippe ich das was ich gelernt habe in den Computer, ... trotz 50+ gehörte ich nicht der "Copy&Paste-Gemeinde" an...

LG nistra
nistra
nistra 01.03.2014 um 17:08:15 Uhr
Goto Top
Hallo zusammen...
ich verzweifle gerade..., ... ich hatte schon gedacht, ich hätte es verstanden, ... habe ich aber nicht...
Ich verstehe das einfach nicht...
Wäre nett, wenn mir das einer erklären könnte...

Das hier unten funktioniert natürlich nicht, leider...

@echo on

set /p a=das
set /p b=ist
set /p c=ein
set /p d=test

echo %1 %2 %3 %4

echo %1
echo %2
echo %3
echo %4

pause


LG nistra
colinardo
colinardo 01.03.2014 aktualisiert um 18:24:10 Uhr
Goto Top
Ok dann fehlen dir doch so ziemlich die Grundlagen zur Variablenverwendung in Batch:
Dann bin ich mal gnädig, weil heute Samstag ist face-wink
@echo off
set a=das
set b=ist
set c=ein
set d=test
echo %a% %b% %c% %d%
pause
Ausgabe
das ist ein test
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.
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 face-smile

Grüße Uwe
Biber
Biber 01.03.2014 aktualisiert um 18:35:37 Uhr
Goto Top
Moin nistra,

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
nistra
nistra 01.03.2014 um 20:17:21 Uhr
Goto Top
Hallo zusammen...

hallo colinardo, hallo Biber...

Dankeschön..., ... damit werde ich erst mal ne Weile rumspielen, bis ich alles nachvollziehen kann...

Schönes Wochenende...

LG nistra
nistra
nistra 02.03.2014 um 12:41:08 Uhr
Goto Top
Hallo zusammen...
Hallo colinardo, hallo Biber...
... ich experimentiere noch...

Habe im I-Net noch was gefunden...
Und verstehe nicht, warum es nicht funktioniert...
Es folgt der O-Text...

Zitat:
Alle Parameter wo du hinten einfach mehr Leerzeichen anhängst, kannst du mit %1, %2, ....im Script aufrufen:
C:\> test.bat dollar euro dmark
Das Script für die einfach Ausgabe (einfaches Beispiel) sieht so aus:

@echo off
echo %1
echo %2
echo %3
Ergebnis:
C:\>dollar
C:\>euro
C:\>dmark

Wichtig ist, falls mal ein Parameter an sich Leerzeichen enthält, diesen dann in Anführungszeichen zu schreiben:
C:\> test.bat "hallo welt"
Zitat Ende.

Das hatte ich so gemacht (in/mit meiner test.bat)...

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...

LG nistra
colinardo
colinardo 02.03.2014 aktualisiert um 12:57:08 Uhr
Goto Top
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):

3c092f1192a3173bbd10cfd07fc58c6e
nistra
nistra 02.03.2014 um 17:23:28 Uhr
Goto Top
Hallo colinardo...

das war jetzt verständlich...

Aber nirgendwo steht geschrieben, dass man die Parameter n u r auf der Konsole (in der Eingabeaufforderung usw. usw. ...) eingeben kann/muss.

Habe es gerade ausprobiert, ... es funktioniert natürlich.

Ich verstehe das so, dass man %1 - %9 nur in einer batch-Datei nutzen kann, wenn man vorher auf der Konsole die zusätzlichen Parameter angegeben hat...

In einer "test2.bat" habe ich folgendes geschrieben:

@echo off
echo %0 (oder ohne Anführungszeichen %~0)
pause>nul

Ausgabe ist:

"C:\Users\IBM\Desktop\test2.bat"


Ich benutze batch-Dateien um mir die Arbeit zu erleichtern und Lösungen zu schaffen, die ich nur anklicken muss...

Das geht ja dann doch nicht, zumindest ab %1 aufwärts...

In Büchern und Texten und im Internet steht nirgendwo, dass man die Parameter nur in der Konsole nutzen kann...

!!! Also war bis jetzt dein Hinweis, mit der Konsole sehr wichtig !!!

Das mit den "normalen" Variablen habe ich verstanden, z.B. so, wie du es oben geschrieben hattest..., damit arbeite ich auch...

---

Was ich trotzdem nicht verstehe, ... ist aus einem "Batch-Buch", ... Name steht weiter oben, ....
Da heißt es:

... unter anderem...

If (%1)==(/h) Goto meldg
If (%1)==(/H) Goto meldg
If (%1)==(/?) Goto meldg
... ...

Das sind doch Abfragen die in einer batch-Datei stehen...., das muss ich doch nicht auf der Konsole eintippen, ... oder doch?

Wenn ihr noch Zeit und Lust habt, ... dann bitte auch dieses Rätsel auflösen...

LG nistra
colinardo
colinardo 02.03.2014 aktualisiert um 17:43:59 Uhr
Goto Top
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.
pieh-ejdsch
pieh-ejdsch 02.03.2014 aktualisiert um 18:06:36 Uhr
Goto Top
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
Find
ein.
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
Den meisten Programmen wird eine KommandozeilenHilfe beigefügt, welche mit
help Programmname
Programmname /?
oder
Programmname -h
aufgerufen wird.
Hier der Befehl:
find /?
wobei Slash Fragezeichen der erste übergebene Parameter ist. Daher ist es auch ein Übergabeparameter.
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.
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
nistra
nistra 02.03.2014 um 18:38:33 Uhr
Goto Top
Hallo zusammen.

hallo colinardo, hallo Biber, hallo pieh-ejdsch...

Tut mir leid, dass ich euch so viel Arbeit mache, ... ich muss das erst mal verarbeiten, ... habe bestimmt 30 Stunden vor der Kiste gesessen und mich mit dem "%1 - %9-Problem" beschäftigt...

Hoffe aus euren vielen Antworten kann ich mir die basteln, die ich verstehe...

Ich schliesse das Thema aber noch nicht, ... erst wenn ich ein einfaches batch getippt habe, dass ich nachvollziehen kann...

Danke nochmal an alle Beteiligten...

LG nistra
Endoro
Endoro 03.03.2014 aktualisiert um 10:15:39 Uhr
Goto Top
Hey nistra,
ich hab noch eine Buchempfehlung:
The Windows Command Line Beginner's Guide - Second Edition
Gruss, Endoro.
nistra
nistra 03.03.2014 um 13:23:09 Uhr
Goto Top
Hallo zusammen...

Hallo Endoro..., ... werde ich mir kaufen, ... kostet nur 89 Cent, ... bin eher ein Freund von physikalischen Büchern, aber das Buch werde ich sicherlich brauchen face-smile...

---

!!! Habe das auch jetzt verstanden, ... der entscheidende Hinweis kam von colinardo...

Ich bin immer davon ausgegangen, dass die %1 - %9-Angaben sich direkt auf den Inhalt der Batch-Datei beziehen, ... und das ist ja nur bedingt richtig...
In Büchern und in sämtlichen Foren ist es auch nicht eindeutig beschrieben...

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...

Zum Beispiel diese Zeilen:

If "%*" NEQ "" goto :showParameter %*
call "%~f0" ...
IF "%6"=="UndEnde" goto :exit
"%~0" %a% %b% %c% %d% SelbstaufrufOhneCall UndEnde

Bis dahin...
LG nistra
Biber
Biber 03.03.2014 aktualisiert um 15:13:38 Uhr
Goto Top
Moin nistra,

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...

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