dsp
Goto Top

Wie übergibt man einer auszuführenden Batch-Datei eine Variable?

Hallo zusammen,
ich übe gerade mit Batch-Dateien.

Im Code werden Variablen verwendet.
Wie kann ich beim Aufruf der Batch-Datei in der Kommandozeile den Inhalt einer Variablen mitgeben?
Ich möchte z.B. das Batch aufrufen und dabei bewirken, dass die Variable Datei mit "Name123" gefüllt wird.

rename_file.bat
REM <Dateiname> als Variable setzen
	set Datei=<NAME>

REM <Endung> als Variable setzen
	set Endung=<ENDUNG>

REM Datum erstellen JJJJ-MM-TT
	set ARCHIVNAME=%date:~6,4%%date:~3,2%%date:~0,2%

REM Neuen Dateinamen zusammensetzen
	set NEU=%Datei%_%Archivname%.%Endung%

REM Benenne die Datei um
	ren D:\Test\Test.tib %Neu%

Viele Grüße
Dieter

Content-Key: 146504

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

Printed on: April 23, 2024 at 09:04 o'clock

Member: manuel-r
manuel-r Jul 08, 2010 at 12:20:39 (UTC)
Goto Top
Startparameter übergibst du an die Batch mit einem Aufruf nach dem Schema meinbatch.cmd variable1 variable2 variable3
Innerhalb der Batch hast du dann Zugriff auf die übergebenen Werte über die Variablen %1, %2, %3. Wenn ich mich richtig erinnere, dann sind bis zu 10 Argumente bei einem Aufruf möglich. Sollten die zu übergebenden Parameter Leerzeichen enthalten muss das ganze dann in Anführungszeichen gefasst werden, weil Leerzeichen als Argumentseperator interpretiert werden.

Manuel
Mitglied: 77559
77559 Jul 08, 2010 at 12:44:17 (UTC)
Goto Top
Ergänzend sei angemerkt
  • Es sind 9 Argumente die direkt angesprochen werden können (%0 steht für den Namen der laufenden Batch-Datei) siehe auch "Call /?"
  • mit Hilfe von Shift ist die Anzahl der verarbeitbaren Argumente nur von der max. Zeilenlänge abhängig, siehe "Shift /?"

Gruß
LotPings
Member: dsp
dsp Jul 08, 2010 at 13:10:40 (UTC)
Goto Top
Danke für die Infos.
Ich habe die Parameter mal in den Code eingefügt:

rename_file.bat [Dateiname ohne Endung] [Endung] [Pfadangabe]
rename_file.bat Test tib D:\Test

REM Variable <Dateiname> aus Startparameter %1
	set Datei=%1

REM <Endung> aus Startparameter %2
	set Endung=%2

REM Datum erstellen JJJJ-MM-TT
	set DATUM=%date:~6,4%%date:~3,2%%date:~0,2%

REM Neuen Dateinamen zusammensetzen
	set NEU=%Datei%_%DATUM%.%Endung%

REM Benenne die Datei um, Pfadangabe entspricht dem Startparameter %3
	ren %3\Test.tib %Neu%

In diesem Code ist sicherlich einiges etwas umständlich, aber generell funktioniert es.
Es geht ja darum, wie man die Startparameter verwenden kann.

Für mich ist die Sache erstmal gelöst.
Nochmals Danke.
Mitglied: 77559
77559 Jul 08, 2010 at 13:28:42 (UTC)
Goto Top
Wenn du dir die Ausgabe von
Call /?
genauer angesehen hast sind dir vielleicht die Tilde ~ Befehle aufgefallen.

Mit deren Hilfe kannst du das Aufsplitten des Dateinamens der Batch überlassen - so brauchst du nur einen kompletten Dateinamen mit Pfad zu übergeben.
@Echo off
Set "Datum=%date:~6,4%%date:~3,2%%date:~0,2%"  
If Exist "%~f1" Echo Ren "%~1" "%~n1_%Datum%%~x1"  

Gruß
LotPings
Mitglied: 60730
60730 Jul 12, 2010 at 12:09:13 (UTC)
Goto Top
Moin,

Zitat von @dsp:
Danke für die Infos.
In diesem Code ist sicherlich einiges etwas umständlich, aber generell funktioniert es.
Es geht ja darum, wie man die Startparameter verwenden kann.

und da es in dem (und ähnlichen) Fall(en) ja nur dann erfolgversprechend ist, wenn es einen parameter gibt, wäre ein
if not "%1"=="" echo parameter wurde gesetzt oder ähnliches  
Dann ein Feinschliff.

Gruß