Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Position einer Datei mittels Bat bestimmen

Frage Entwicklung Batch & Shell

Mitglied: JK87

JK87 (Level 1) - Jetzt verbinden

14.10.2005, aktualisiert 17.10.2012, 11133 Aufrufe, 24 Kommentare

Hallo!

Kann man die Position einer Datei bestimmen?

Die Datei test.exe befindet sich auf einem Laufwerk in einem Ordner, welche beide nicht bekannt sind, im gleichen Ordner befindet sich auch test.ini. Die EXE soll nun feststellen in welchen Ordner sich die EXE befindet und den Pfad zwichen speichern um die test.ini zufinden.
Das soll alles nach möglichkeit in der test.exe stattfinden!

Oder hat jemand eine andere Lösung für mein Problem?

Hab eine Bat->Exe geschrieben welche Daten aus einer Ini im gleichen Ordner wie die Exe holt.
Ich möchte diese mit dem VPN Novell Client starten welcher das ausführen nach dem Verbinden unterstützt, jedoch kann ich kein "Ausführen in - Ziel" angeben wie es zum beispiel bei normalen Verküpfungen funktioniert.

zB
<img src='/images/articles/36dceacb4a4ebf1549917feb3a5ea521-1.gif' align='default' hspace='0' vspace='0' border='0'>

Hoffe irgend jemand hat eine Lösung.
Danke im Voraus!

JK
Mitglied: 8644
14.10.2005 um 18:17 Uhr
Hi,

sorry, aber ich verstehe nicht so ganz, was du möchtest!
Du möchtest das Verzeichnis einer Datei namens test.exe finden?
Anhand dieser Pfadangabe weißt du wo die test.ini liegt? - Warum nicht gleich nach der test.ini suchen?
Dann soll der VPN Client beim starten die test.exe ausführen?

Erklär mal etwas näher bzw. verständlicher! Oder bin nur ich verwirrt?

Psycho
Bitte warten ..
Mitglied: 11078
14.10.2005 um 18:20 Uhr
Hallo,

also wenn ich das richtig verstanden habe, hast Du aus einer BAT eine EXE gemacht und Du möchtest jetzt wissen, mit welchem Batch-Befehl man herausfinden kann, in welchem Verzeichnis die BAT/EXE jetzt ist, richtig?

Der Befehl heißt einfach: cd (ohne Punkte, etc.).
Liefert das aktuelle Arbeitsverzeichnis als String zurück.


Gruß,
Tim
Bitte warten ..
Mitglied: JK87
14.10.2005 um 19:12 Uhr
Ich möchte nur, dass der VPN Client die test.exe ausführt und die in der test.ini enthaltenen Daten von test.exe gefunden werden. --> ohne VPN funkt es ganz normal, aber mit dem VPN findet er die ini nicht mehr (weil er ja nicht weis in welchem Verzeichnis er die Datei ausführen soll, zB siehe Screenshot)!

Hoffe jetzt verstehst du mein Problem!
Vielleicht war die Frage wirklich etwas verwirrend!

JK
Bitte warten ..
Mitglied: JK87
14.10.2005 um 19:13 Uhr
Genau du hast es verstanden!

Das bringt mich schon einen Schritt näher zu meinem Ziel.

thx

JK
Bitte warten ..
Mitglied: JK87
16.10.2005 um 13:19 Uhr
Der Befehl funktioniert einwandfrei!

Allerdings bewirkt er nicht das Richtige was ich wollte.
Wenn ich die Exe über die Verknüpfung aufrufe, gibt er mir als cd den Desktop aus!
Gibt es eine Möglichkeit wo er mir den Ort der Exe ausgibt?

thx

JK
Bitte warten ..
Mitglied: gemini
16.10.2005 um 14:00 Uhr
Hallo Jörg,

wenn ich dich richtig verstehe möchtest du eine Verzeichnisstrutur rekursiv nach einer bestimmten Datei durchsuchen und das übergeordnete Verzeichnis dieses Pfades in einen Link als WorkDir eintragen.
Dafür ist cd nicht geeignet, das liefert nur das aktuelle Verzeichnis zurück.

Wenn es mit BAT gelöst werden muss, sieh dir die Beiträge von Biber an!

Ein VBScript das Verzeichnisse rekursiv durchläuft findest du hier:
http://www.administrator.de/Finden_von_Office-Dateien_mit_Schreibschutz ...
Muss halt noch ein wenig umbauen, ist aber nicht schwer.
On Error Resume Next ist in diesem Script zwingend notwendig, da sonst in Verzeichnissen für die keine Rechte bestehen (bspw. System Volume Information) Fehler erzeugt werden.
Wenn die Datei gefunden wurde, kannst du mit dem Befehl ParentFolder des FileSystemObjects den übergeordneten Ordner ermitteln.

Eine Erläuterung wie man Links per Script erstellt, verteilt und bearbeitet inkl. entspr. VBScripte findest du auf den Seiten von Roland Weisskopf, EagleSoft Ltd.
http://mypage.bluewin.ch/eaglesoft/infopages/vbs/vbsshort.htm

Ich hoffe das hilft dir ein wenig weiter.
gemini
Bitte warten ..
Mitglied: Biber
16.10.2005 um 14:25 Uhr
Moin Jk87,

die Funktionalität, die Du suchst, bekommst Du über den (immer vorhandenden) Parameter %0.
Wenn Du testweise in Deiner Bat-Datei einbaust:
@Echo Name der Datei: %0
...bekommst Du Namen und Pfad geliefert, z.B. "d:\test\beispiel"

Du kannst es noch verfeinern als (einen oder mehrere Buchstaben von)
%~dpnxtz0 ... d wie drive, p wie path, n wie name, x wie eXtension, z wie siZe, t wie dateTime..

Was Du also brauchst, sind Drive und Path, also d und p.
~~~~...
set Verzeichnis=%~dp0
echo Verzeichnis der Bat-Datei %verzeichnis%, aktuelles Verzeichnis ist %cd%
~~~..
Sollte das liefern, was Du haben willst.
Das oben in den ersten Posts beschriebene %cd% (bzw. die Abfrage des Befehls "cd") liefert schon das Richtige, nämlich das Verzeichnis, von dem Du aufrufst. Also den Desktop.

HTH und Greetz
Biber

[Edit] Parameter n hatte ich vergessen.. braucht man/frau auch gelegentlich. [/Edit]
Bitte warten ..
Mitglied: gemini
16.10.2005 um 14:36 Uhr
@Biber
@Echo Name der Datei: %0
...bekommst Du Namen und Pfad geliefert,
z.B. "d:\test\beispiel"
%0 liefert das aktuelle Verzeichnis zurück, vgl. pwd

Ich habe es so verstanden, dass das Script eine Datei suchen muss.
Diese Datei "... befindet sich auf einem Laufwerk in einem Ordner, welche beide nicht bekannt sind,..."
In diesem Fall würde %0 nicht weiterhelfen, genausowenig wie cd, weil ja bei beiden das Verzeichnis bekannt sein und die Batch darin gestartet werden müsste.

Oder versteh ich da was falsch *grübel*
So wirklich leichtverständlich, zuminest für Leute in meinem Alter, ist das Posting ja nicht

gemini
Bitte warten ..
Mitglied: Biber
16.10.2005 um 14:54 Uhr
@gemini

Hmmm... *auch am Kopf kratzt
>>Die Datei test.exe befindet sich auf einem Laufwerk in einem Ordner, welche beide nicht
>>bekannt sind, im gleichen Ordner befindet sich auch test.ini. Die EXE soll nun feststellen
>>in welchen Ordner sich die EXE befindet und den Pfad zwichen speichern um die test.ini
>>zufinden.
>>Das soll alles nach möglichkeit in der test.exe stattfinden!

Also, wenn die *.Exe was-auch-immer macht, muss sie aufgerufen werden.
Also z.B. im Suchpfad %path% stehen. Das wäre ein Fall, in dem die *.Exe läuft, ohne dass ich vorher weiß, in welchem Verzeichnis sie steht.

Aber ist ein bisschen unklar ausgedrückt... vielleicht schwankt JK87 noch zwischen Admin- und Politiker-Laufbahn.

@JK87: Kannst Du noch mal bitte die Anforderung umformulieren?
Wenn ich es falsch verstanden habe und der Pfad der "Test.ini" das ausschlaggebende ist, wäre natürlich ein anderer Oneliner sinnvoll (eine FOR /R ...IN..DO-Schleife, also eine rekursive Suche, wie gemini schon geschrieben hat).

Biber

[Edit] @gemini
>So wirklich leichtverständlich, zuminest für Leute in meinem Alter, ist das Posting ja nicht
Selbst für jüngere und vitalere wie mich ist es schwierig
[/Edit]
Bitte warten ..
Mitglied: gemini
16.10.2005 um 16:14 Uhr
@Biber
Selbst für jüngere und vitalere wie mich ist es schwierig [/Edit]
Das beruhigt mich ungemein. Puuhh

Dann ist es also nicht beginnende Altersenilität sondern nur der normale geistige Abbau bei über 30-jährigen
Bitte warten ..
Mitglied: JK87
24.10.2005 um 11:52 Uhr
@Biber
Erstmal Sorry für die verspätete Antwort!

Du hast das vollkommen richtig verstanden.
Oder kennst du eine andere Möglichkeit damit meine bat/exe die ini findet, wenn ich sie ohne "Ausführen in" vom Desktop starte (exe und ini liegen im selben ordner)?

thx

JK
Bitte warten ..
Mitglied: Biber
24.10.2005 um 13:21 Uhr
Moin, Jörg,

ich würde es wirklich erst so versuchen wie oben beschrieben.
~~~~...
set Verzeichnis=%~dp0
echo Verzeichnis der Bat-Datei %verzeichnis%, aktuelles Verzeichnis ist %cd%
~~~..

Sollte das, warum auch immer nicht klappen, dann wäre die nächst-aufwändigere Strategie, tatsächlich diese Datei zu suchen... mit FOR /R..IN.. DO oder was-auch-immer.

Oder (wie es ja auch viele Applikationen machen) darauf zu bestehen, dass der Pfad der *.ini-Datei in einer Umgebungsvariablen definiert sein muss/in der Registry zu finden ist.
Aber so etwas wäre für mich immer nur Plan B.

Funktioniert denn der Weg oben über "%~dp0" bei Dir nicht?

Grüße
Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: JK87
24.10.2005 um 13:28 Uhr
Wenn ich die Exe direkt vom Verzeichnis aus starte gibt er mir den richtigen Pfad aus, aber wenn ich sie über die Verknüpfung am Desktop starte gibt er mir das Temp-Verzeichnis des aktuellen Benutzers aus!

Funktioniert also nicht so wie ich das möchte!

JK
Bitte warten ..
Mitglied: Biber
24.10.2005 um 13:50 Uhr
Tja, Jörg,

dann wird diese wohl so arbeiten, dass sie zwar als *.exe gestartet wird, aber den "eigentlich" auszuführenden Originalbatch wirder 1:1 im %temp%-Verzeichnis erzeugt und anschließend weglöscht.
Wenn Du also aus irgendwelchen Gründen eine *.exe haben willst/musst... dann fürchte ich, musst Du den Weg über Umgebungsvariable"MeinInstVerzeichnis" oder einen Reg-Eintrag gehen. Als purer Batch würde es wohl funktionieren.

Oder die Test.ini (oder wie sie halt heißen mag) tatsächlich suchen. Aber das Suchen ist natürlich am fehlerträchtigsten - kann ja immer mehrere Dateien mit diesem Namen geben.

Auf wie vielen Rechnern läuft denn die Anwendung? Und sind das alles für Dich erreichbare Clients?
Biber
Bitte warten ..
Mitglied: JK87
24.10.2005 um 14:02 Uhr
Läuft auf unbestimmt viele Rechner welche ich nicht als Client erreicbar sind!
Grund: Programm soll für jeder man funktionieren!

JK
Bitte warten ..
Mitglied: JK87
24.10.2005 um 14:03 Uhr
Läuft auf unbestimmt viele Rechner welche ich nicht als Client erreicbar sind!
Grund: Programm soll für jeder man funktionieren!

JK
Bitte warten ..
Mitglied: JK87
24.10.2005 um 14:04 Uhr
Läuft auf unbestimmt viele Rechner welche ich nicht als Client erreicbar sind!
Grund: Programm soll für jeder man funktionieren!

JK
Bitte warten ..
Mitglied: JK87
24.10.2005 um 14:05 Uhr
Läuft auf unbestimmt viele Rechner welche ich nicht als Client erreicbar sind!
Grund: Programm soll für jeder man funktionieren!

JK
Bitte warten ..
Mitglied: Biber
24.10.2005 um 14:19 Uhr
Tja, hinterlegst Du denn den Inst-Pfad bei der Installation irgendwo in der Registry?
Das wäre ja das nächst elegantere...
Sonst sind wir wieder bei wackeligen Lösungen...
Angelehnt an das obige Bildchen wäre denkbar eine Prüfung a la

...
set "testIni="
if exist "%ProgramFiles%\VideoLan\test.ini" set "testini=%ProgramFiles%\VideoLan\test.ini"
...
Bitte warten ..
Mitglied: JK87
24.10.2005 um 14:25 Uhr
Hab das Setup mit WinRar SFX gemacht, das hinterlegt anscheinend einen Eintrag in die Registry!

Was ist damit möglich?
Einfach auslesen aus der Registry lassen oder?

JK
Bitte warten ..
Mitglied: Biber
24.10.2005, aktualisiert 17.10.2012
Ja, das hört sich schon besser an..

Du kannst das nach dem Muster dann schnell abprüfen (das Beispiel hatte tim.frodermann heute in einem anderen Beitrag <a href=http://www.administrator.de/forum/drucker-aus-registry-mittels-batchdat ... target="blank">Drucker aus Reg auslesen</a> )

@ECHO OFF
set "RegKey=HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices"
:: Delims ist ein Tab gefolgt von einem Leerzeichen
FOR /F "TOKENS=2* DELIMS= " %%A IN ('REG QUERY "%regKey%"') DO SET Drucker=%%B
ECHO %regkey%=%Drucker%
~~~~

Musst bloß Deinen RegKey wissen...

Biber
Bitte warten ..
Mitglied: Biber
24.10.2005, aktualisiert 17.10.2012
Nachtrag:

1. Hatte die Links vorhin nicht griffbereit bzw. anderes zu tun.
tim.frodermann hat mal ein ganz nettes Tutorial zu dem Thema <a href=http://www.administrator.de/wissen/die-windows-registry-mit-reg-dateien ... target="blank">"In der Registry rumbätchen"</a> geschrieben. Hilft bestimmt.
2. Und - mein Fehler vorhin - Du kannst natürlich bei Deinen unbekannten Anwendern nicht voraussetzen, dass die eine Reg.exe haben.
Also musst Du über mit 'RegEdit.exe /e "%temp%\jk.reg" ...' eine Textdatei erzeugen und die mit "find" durchflöhen.
Dazu hab ich <a href=http://www.administrator.de/Workshop_Batch_for_Runaways_Part_III_Datums ... target="blank">im Teil III meines Batch-Workshops</a> ein Beispiel.

HTH Biber
Bitte warten ..
Mitglied: JK87
27.10.2005 um 15:06 Uhr
thx Biber

kann das Verzeichnis aber auch nicht mit der registry konstruieren
Grund: Der Name des Registry-Eintrags mit dem Pfad lautet genauso wie der Pfad, sprich "C%%Programme%ProxyOnOff"="C:\\Programme\\ProxyOnOff" und das weis ich eben nicht wo der benutzer es hin installiert hat. --> WinRarSFX

Kannt du mir vielleicht einen anderen Weg sagen?

JK
Bitte warten ..
Mitglied: Biber
27.10.2005 um 16:02 Uhr
@JK87
...das ist aber lumpig von den WinRarSfx-Codern...
Da hätte ich aber Verbesserungsvorschläge *kopfschüttelt

Tja, dann bleiben Dir noch eine simple, eine umständliche, eine unsichere und eine benutzerunfreundliche Strategie:

1. Die Simple:
Schreibe bei der Installation mit RegEdit (notfalls liefere eine *reg-Datei mit) irgendwo in die Registry HKCU einen Schlüssel, den Du wiederfindest. Mit dem Inst-Pfad. Fertig. Dein InstProg müllt doch eh in die Registry rein.

2.Die Umständliche
Bei der Installation eine dauerhafte Umgebungsvariable setzen.
Set "ProxyOnOffDir=x:\PfadZumProg"
... aber da brauchst Du auch wieder entweder "PathMan.exe" aus dem ResKit ODER Du schreibst es in die Registry in den User-Path... dann klappt es erst nach Neustart.
Da ist selbst Methode 1 eleganter. Und unsicher ist es auch ...

3. Die mit Abstand unsicherste Methode
Alle (lokalen) Laufwerke absuchen nach Deiner "*.ini"... mit FOR /R...IN..DO.
Da gibt es unter "Suchen nach pst-Dateien" ein paar Beiträge..
Aber das klappt nur halbwegs zuverlässig, wenn Deine Ini-Datei einen relativ exotischen Namen hat. Wenn da zwei gleichnamige Dateien gefunden werden, stehst Du wieder dumm da.

4. Die benutzerunfreundliche Methode
Prompten nach dem Pfad. Mit "Set /P " oder einer Messagebox...
Aber das verzeiht Dir kein Anwender... ist nur eine hypothetische Möglichkeit.

Mehr fällt mir aus dem Stand nicht ein... aber vielleicht hat jemand anders noch eine Idee.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Windows Server
gelöst Sichtbares Ausführen einer BAT-Datei mittels GPOs (10)

Frage von DasWombat1993 zum Thema Windows Server ...

Windows 7
gelöst Bat Datei erstellen für Homeroot (2)

Frage von leon22 zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...