Mit Batch Datei Pfad suchen, diesen dann weiter verwenden
Hallo,
also ich habe folgendes vor: 1. muss eine batch datei eine andere datei suchen (die gibt es 100% nur einmal) nenn wir hier z.b. mal test.dll
2. muss die bat datei das Verzeichnis "merken" um es dann an anderer stelle einzufügen um einen anderen befehl ausführen zu können
also beispiel wie ich es mir vorstelle:
@echo off
suche test.dll und speicher pfad unter z.b. Pfad1
cd "%systemroot%\Microsoft.NET\Framework\v2.0*\"
regasm /register "Pfad1\test.dll"
der hintergrund von den ganzen is das ich ein installer baue un da das installationsverzeichnis nicht immer gleich sein muss un wenn ein anderer die setup.exe ausführt (das mit test.dll batch datei wird in setup.exe eingebunden) soll halt net arbeit haben un die datei selber suchen.
hoffe es kann einer was zusamm basteln!
MfG
MTB
also ich habe folgendes vor: 1. muss eine batch datei eine andere datei suchen (die gibt es 100% nur einmal) nenn wir hier z.b. mal test.dll
2. muss die bat datei das Verzeichnis "merken" um es dann an anderer stelle einzufügen um einen anderen befehl ausführen zu können
also beispiel wie ich es mir vorstelle:
@echo off
suche test.dll und speicher pfad unter z.b. Pfad1
cd "%systemroot%\Microsoft.NET\Framework\v2.0*\"
regasm /register "Pfad1\test.dll"
der hintergrund von den ganzen is das ich ein installer baue un da das installationsverzeichnis nicht immer gleich sein muss un wenn ein anderer die setup.exe ausführt (das mit test.dll batch datei wird in setup.exe eingebunden) soll halt net arbeit haben un die datei selber suchen.
hoffe es kann einer was zusamm basteln!
MfG
MTB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67314
Url: https://administrator.de/contentid/67314
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
7 Kommentare
Neuester Kommentar
Moin MTB4ever,
kannst Du z.B. mit dem FOR/R-Befehl machen [Demo am CMD-Prompt]:
[Ungetestet; im Batch zwei %-Zeichen statt einem]
wobei das "@echo " hier nur zum Testen ist und das Startverzeichnis "c:\" optional und vollkommen willkürlich.
Falls Du auf mehreren/allen Laufwerken suchen willst, kannst Du noch eine FOR-Anweisung herumbasteln.
Grüße
Biber
kannst Du z.B. mit dem FOR/R-Befehl machen [Demo am CMD-Prompt]:
for /r "c:\" %i in (test.dll) do @echo Set "pfad1=%~dpi"
wobei das "@echo " hier nur zum Testen ist und das Startverzeichnis "c:\" optional und vollkommen willkürlich.
Falls Du auf mehreren/allen Laufwerken suchen willst, kannst Du noch eine FOR-Anweisung herumbasteln.
for %j in (c d e ) do @for /r "%j:\" %i in (test.dll) do @echo Set "pfad1=%~dpi"
Grüße
Biber
Moin MTB4ever,
sorry, ich hätte es auch testen sollen.
Also, folgende kleine Nachbesserungen wären sinnvoll:
1) bei der Datei, nach der Du suchst ("Beispiel.exe" oder "Beispiel.dll" noch ein "?" anhängen.
2) Falls das angedeutete Suchen auf mehreren Laufwerken nötig sein sollte, würde ich die Laufwerke nacheinander, aber nicht in einer FOR-Anweisung abklappern.
3) und dann bitte erstmal das Ergebnis anzeigen, bevor Du tatsächlich irgendein Regasm-Aufruf machst.
In Batch also:
Bei der Anzeige des regasm-Aufrufs sollte jetzt der "richtige" Pfad angezeigt werde mit der Auffälligkeit, dass nach dem gefundenen pfad1 vor der ndm.dll ZWEI Backschlashes stehen.
Der CMD.exe mach das nichts aus (C:\test\xy.txt ist gleichbedeutend c:\\test\\\xy.txt).
Ob die RegAsm.exe das ab kann, weiß ich nicht - ggf. sonst den Regasm-Aufruf ändern in:
Grüße
Biber
sorry, ich hätte es auch testen sollen.
Also, folgende kleine Nachbesserungen wären sinnvoll:
1) bei der Datei, nach der Du suchst ("Beispiel.exe" oder "Beispiel.dll" noch ein "?" anhängen.
2) Falls das angedeutete Suchen auf mehreren Laufwerken nötig sein sollte, würde ich die Laufwerke nacheinander, aber nicht in einer FOR-Anweisung abklappern.
3) und dann bitte erstmal das Ergebnis anzeigen, bevor Du tatsächlich irgendein Regasm-Aufruf machst.
In Batch also:
@echo off & Setlocal
for /r "c:\" %%i in (beispiel.exe?) do Set "pfad1=%%~dpi"
if not defined pfad1 for /r "d:\" %%i in (beispiel.exe?) do Set "pfad1=%%~dpi"
if not defined pfad1 for /r "e:\" %%i in (beispiel.exe?) do Set "pfad1=%%~dpi"
cd "%systemroot%\Microsoft.NET\Framework\v2.0*\"
ECHO regasm /register "%Pfad1%\ndm.dll"
Bei der Anzeige des regasm-Aufrufs sollte jetzt der "richtige" Pfad angezeigt werde mit der Auffälligkeit, dass nach dem gefundenen pfad1 vor der ndm.dll ZWEI Backschlashes stehen.
Der CMD.exe mach das nichts aus (C:\test\xy.txt ist gleichbedeutend c:\\test\\\xy.txt).
Ob die RegAsm.exe das ab kann, weiß ich nicht - ggf. sonst den Regasm-Aufruf ändern in:
regasm /register "%Pfad1%ndm.dll"
Grüße
Biber