zensbert
Goto Top

IF-Abfrage und Ausführungsort-Feststellung in Batch

Hallo,
Ich habe eine Batch die Einen Registrywert ausliest, der Wert sieht ziemlich genau so aus:
"C:\PROGRA~1\MICROS~2\OFFICE11\OUTLOOK.EXE" -c IPM.Note /m "%1" der steht dann in der Variable.
Jedoch hätte ich dann gerne dass er einfach eine textausgabe macht wenn er den wert in die variable kriegt z.b.=Outlook 2003.

Desweiteren würde ich diese Batch dann gern auf einem USB Stick ausführen, die batch soll immer ihren ausführungsort erkennen,
z.b. liegt sie auf dem stick in dem ordner m:\software hätte ich gerne M:\ als variable.. weil an einem anderen pc kann das ja statt m ja auch ein anderer laufwerksbuchstabe sein.

wenn jemand ne idee hat würde ich mich ziemlich freuen, danke..

gruß, thomas

Content-Key: 81453

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

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

Member: bastla
bastla Feb 23, 2008 at 09:50:18 (UTC)
Goto Top
Hallo chizophren!

Zunächst zum Ausführungsort: Dieser steht in der Variable %0 zur Verfügung und kann wie folgt verwendet werden (zum Nachlesen der Details: "for /?"):
@echo off & setlocal
echo Batch gestartet als: %0

echo        von Laufwerk: %~d0
echo      aus dem Ordner: %~p0
echo  daher aus dem Pfad: %~dp0

echo      mit Dateinamen: %~n0
echo         und Dateiyp: %~x0

echo    daher Gesamtpfad: %~f0
Du wirst also vermutlich "%~dp0" verwenden wollen.
Zum Thema "Textausgabe": Um den Inhalt einer Variablen auszugeben, müsste man/frau den Variablennamen kennen. Sollte dieser etwa "Var" lauten, wäre die entsprechende Anweisung:
echo %Var%
Soferne die Ausgabe nicht angezeigt, sondern in eine Datei geschrieben werden soll:
echo %Var%>"Lw:\Pfad\Dateiname.Dateityp"  
Die verwendeten Anführungszeichen sind nur dann unbedingt erforderlich, wenn im Pfad oder im Dateinamen Leerzeichen enthalten sind; es schadet aber nicht, sie auf jeden Fall zu setzen.

Durch den letzten Befehl würde eine neue Datei erstellt. Soll nur ene bereits vorhandene Datei um eine weitere Zeile ergänzt werden, ist ">>" zu verwenden, also:
echo %Var%>>"Lw:\Pfad\Dateiname.Dateityp"  
Eine Idee hätte ich übrigens auch noch: face-wink
Poste bitte bei Deiner nächsten Fragestellung schon vorhandenen Code bzw gib etwas detailliertere Informationen (hier: Variablenname, oder, was Du mit "If" vorhattest) ...

Grüße
bastla
Member: zensbert
zensbert Feb 23, 2008 at 10:59:57 (UTC)
Goto Top
hi bastla und danke für die schnelle antwort^^
wie man in eine variable schreibt bzw. abspeichert dass wusste ich, da habe ich mich wohl besch°° ausgedrückt, ich meinte folgendes:
1. reg wert auslesen und variable zuweisen (soweit ok)
2. wenn in der variable der inhalt ist dann sag das..
zb. var mit inhalt a, dann echo b,
hab dafür auch sachen gefunden, jedoch habe ich das problem dass der regwert der in der variable steht Anführungs- und leerzeichen drin hat, dort bricht meine batch dann ab, der inhalt der var ist zb: "C:\PROGRA~1\MICROS~2\OFFICE11\OUTLOOK.EXE" -c IPM.Note /m "%1"
er soll aber halt nich das ausgeben, sondern Outlook 2003..

Thx, Thomas
Member: bastla
bastla Feb 23, 2008 at 11:58:04 (UTC)
Goto Top
Hallo chizophren!

Wenn Du als Ergebnis "Outlook 2003" haben willst, hängt das doch eigentlich nur vom Teil "OFFICE11" ab - daher könntest Du es zB so versuchen:

"OFFICE11" sollte zwar eigentlich immer in Großbuchstaben geschrieben sein, aber um eine Fehlerquelle auszuschließen, kannst Du dem "findstr" noch ein "/i" spendieren ...

Grüße
bastla
Member: zensbert
zensbert Feb 23, 2008 at 12:55:41 (UTC)
Goto Top
das werd ich probieren, vielen dank^^