Pfad in Batch-Datei dynamisch erkennen

  • #1
T

twingofahrer

Guest
Hallo Ihr,

folgendes Problem: ich hab eine Batch-Datei in der mittels einer CALL-Anweisung eine .exe mit entsprechenden Parametern aufgerufen wird.

CALL C:\Programme\PostgreSQL\8.2\bin\createdb relationmanager --username=postgres --owner=postgres --echo

Nun ist mein Problem, dass sich der Pfad bei Ausführung auf verschiedenen Rechnern natürlich verändern kann, d.h. die Daten createdb.exe liegt in nem anderen Verzeichnis. Wie kann ich der Batch-Datei sagen, dass sie dynamisch nach dem entsprechenden Pfad bzw. der entsprechenden Datei suchen soll??

Danke schon mal,

Markus
 
  • #2
Du könntest den Installpfad aus der Registry auslesen.
 
  • #3
*hm*.... ich hab mittlerweile folgendes gefunden um den pfad herauszufinden:

cd c:\
dir createdb.exe /s (>ergebnis.txt)


nun meine frage: wie kann ich das ergebnis statt in einer textdatei auszugeben an eine variable zuweisen???
 
  • #4
Also, nochmal mein Problem:
ich hab nach einer Installationsroutine irgendwo auf der Systemplatte (C:\) eine Datei namens createDB.exe liegen. Diese will ich mittels einer CALL-Prozedur in meiner Batch-Datei ausführen. Hierfür benötige ich aber, soweit ich das richtig verstanden habe, den entsprechenden Pfad. Wir bekomme ich genau diesen Pfad in die CALL-Anweisung??

Kann mir das denn hier keiner sagen??
 
  • #6
Ich verwende für sowas immer ein KIX-Script

Code:
$pfad = ReadValue(HKEY_LOCAL_MACHINE\SOFTWARE\...)
 
  • #7
Soweit bin ich mittlerweile auch schon. Leider hab ich aber noch ein winzige Problem:
im Pfad sind Leerzeichen enthalten. Das heißt wenn ich mir die komplette Zeile ausgeben lasse dann sieht das wie folt aus:

path REG_SZ C:\Program Files\PostgreSQL\81.\bin\

Ich binn natürlich nur an dem hinteren Teil interessiert. Das Problem ist nur, dass ich es nicht über TOKEN/DELIMS lösen kann, da ich nicht weiß, ob der Pfad tatsächlich Leerzeichen enthält.
Ich bräuchte also eine Möglichkeit nach REG_SZ zu suchen und mir den Rest-String (ohne führende Leerzeichen) zu speichern. Kannst Du mir sagen wie das geht???
 
  • #8
Wie schon geschrieben ich mach sowas per KIX

Code:
$pfad = ReadValue(HKEY_LOCAL_MACHINE\SOFTWARE\...)
CD $pfad
Shell $pfad + createdb relationmanager --username=postgres --owner=postgres --echo
 
  • #9
Also entweder liegt es daran dass ich Windoofs hab, aber es funzt nicht!
 
  • #10
Evtl. liegt's am Leerzeichen bei Program Files, dann muss man $pfad halt in Anführungszeichen packen und je nach Pfad kann auch ein Backslash vor createdb fehlen.

Code:
$pfad = ReadValue(HKEY_LOCAL_MACHINE\SOFTWARE\...)
CD $pfad
Shell-> + $pfad +-> + createdb relationmanager --username=postgres --owner=postgres --echo


Und Du weisst auch was KIX ist?

/edit
Da war ein Fehler drin

Code:
$pfad = ReadValue(HKEY_LOCAL_MACHINE\SOFTWARE\...)
CD $pfad
Shell-> + $pfad + createdb' relationmanager --username=postgres --owner=postgres --echo
 
  • #11
Nö, ich hab keine Ahnung was KIX ist. Ich wollte lediglich in einer Batch-Datei einen Pfad aus der registry an eine Variabla zuweisen!
 
  • #12
twingofahrer schrieb:
Ich binn natürlich nur an dem hinteren Teil interessiert. Das Problem ist nur, dass ich es nicht über TOKEN/DELIMS lösen kann, da ich nicht weiß, ob der Pfad tatsächlich Leerzeichen enthält.
Ich bräuchte also eine Möglichkeit nach REG_SZ zu suchen und mir den Rest-String (ohne führende Leerzeichen) zu speichern. Kannst Du mir sagen wie das geht???

Das Problem läßt sich auch per Batch (*.cmd) lösen. Der Ansatz über TOKEN/DELIMS ist schon richtig, dabei ist es egal ob und wieviel Leerzeichen der Pfad enthält, wenn die Formatierung der Zeichen davor bekannt ist.

Code:
Set RegKey=HKLM\Software\...

REM   Pfad zur CreateDB.exe auslesen
For /F tokens=2* %%a in (' reg query %RegKey% /v path->) do (Set CreateDB=%%~b)


REM   Aufruf per CALL
If Exist %CreateDB% (
    CALL %CreateDB% relationmanager --username=postgres --owner=postgres --echo
) Else (
     echo Nicht gefunden
)

Grüße
 
Thema:

Pfad in Batch-Datei dynamisch erkennen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.839
Beiträge
707.962
Mitglieder
51.492
Neuestes Mitglied
Janus36
Oben