Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Suche BATCH Befehl, um Pfad in Textdatei zu schreiben

Mic2004 / 2 Antworten / Flachansicht Nickles

Hallo zusammen,

ich bin auf der Suche nach einer einfachen Möglichkeit mittels einer BATCH-Datei den Pfad einer beliebigen Datei in eine Text-Datei zu schreiben.

Ich möchte unter Windows XP einen Dateityp mit dieser Batch-Datei verknüpfen, sodass deren Pfad per Doppelklick darauf in die Text-Datei geschrieben wird.

Beispiel:
- Eine Datei test.dll liegt im Verzeichnis C:\Testdaten\
- Ich klicke diese Datei doppelt an
- es entsteht eine Textdatei mit dem Inhalt C:\Testdaten\test.dll

Jetzt habe ich nach Suche im Internet mit folgender BATCH-Code-Zeile herumexperimentiert:

@FOR /F "tokens=5 delims=\" %%I in ("%1") do @echo %%~fI > %~dp0%\Testpfad.txt

%1 ist hier dann die Variable für die entsprechende mit der BATCH gestartete Datei (z.B. test.dll).

Leider funktioniert das nicht sehr zuverlässig. Bei Dateien, die in tieferen Verzeichnissebenen als 5 (weil tokens=5) liegen, steht in der Textdatei dann etwas Falsches drin:

Beispiel:
C:\Testdaten\Test2\Test3\Test4\Test5\Test5
Eigenlich müsste es heißen: C:\Testdaten\Test2\Test3\Test4\Test5\test.dll

Erhöhe ich aber die Zahl bei tokens=, dann entsteht bei kurzen Dateipfaden nur eine leere Textdatei (ohne Inhalt).

Ein weiteres Problem ist, dass manchmal ein Pfad gefolgt von einem Ausführungszeichen (“) und manchmal ohne erstellt wird. Beispiel:

Entweder: C:\Testdaten\test.dll
Oder: C:\Testdaten\test.dll“

Damit kommt aber das Programm, was mit dieser Textdatei dann weiter arbeit soll nicht klar. Es darf also kein Ausführungszeichen am Ende kommen und der Pfad darf auch bei Leerzeichen im Verzeichnis- oder Dateinamen nicht abgebrochen werden Beispiel:

Aus C:\Test und Daten\test.dll darf in der Textdatei nicht C:\Test werden.

Kann mir da jemand von euch weiter helfen? Gibt es vielleicht einen zuverlässigeren Befehl dafür? Schön wäre es, wenn er auch mit Netzwerkpfaden zu Recht kommt: \\Server\Testdaten\test.dll

Vielen Dank für eure Hilfe im Voraus!

Grüße,
Mic2004.

bei Antwort benachrichtigen