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
Mic2004 Borlander „Mal ganz blöd gefragt: Hast du es schon mal ganz einfach mit echo 1 zieldatei...“
Optionen

Hallo Borlander!

Nein, einfach ein %1 zu verwenden hat bei mir nicht zuverlässig funktioniert.

Du hast aber Recht, manchmal ist weniger doch mehr. Nach einigem Experimentieren, stellte sich folgender Befehl als am Zuverlässigsten heraus:

@ECHO %~f1 > %~dp0%\Test.txt

Er erstellt eine Text-Datei (z.B. Test.txt) im Verzeichnis der Batch-Datei (%~dp0%) und schreibt darin den Pfad der mit der Batch-Datei zusammen gestarteten Datei (%~f1). Dies klappt auch für Pfade mit Leerzeichen in Verzeichnisnamen.

Trotzdem danke!

Grüße,
Mic2004.

bei Antwort benachrichtigen