pbelcl
Goto Top

Variable CD ohne Tilde auslesen ?

%CD% auslesen ohne Tilde

Hi Leute,

Ich möchte gerne eine Batchdatei als Link in einem Filemanager (Totalcommander) ausführen und dabei den aktuellen Pfad berücksichtigen.

Beim Auslesen der Variable %CD% bekomme ich zwar den aktuellen Pfad, aber leider werden die Verzeichnisnamen mut Umlauten falsch abgebildet und längere Ordnernamen mit den DOS Pfaden (mit Tilde) abgekürzt.

Kann mir jemand einen Tipp geben, wie ich einen Pfad OHNE diese Einschränkungen in eine BATCH Variable bekomme??

Content-Key: 163577

Url: https://administrator.de/contentid/163577

Printed on: April 23, 2024 at 10:04 o'clock

Member: bastla
bastla Mar 29, 2011 at 13:45:56 (UTC)
Goto Top
Hallo pbelcl!

Hinsichtlich der Umlaute sollte ein
chcp 1252>nul
helfen, und das angesprochene Verhalten von %cd% ist mir zwar neu, könnte sich aber vielleicht per
for %%i in ("%cd%") do set "Aktuell=%%~fi"
umgehen lassen ...

Grüße
bastla
Mitglied: 60730
60730 Mar 29, 2011 at 15:27:35 (UTC)
Goto Top
moin,

Obacht - nur wirklich dann nachmachen, wenn es wirklich drängt...

"HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation" Wert 1

sorgt dafür, das neu angelegte Ordner und Dateien keine 8.3 Shortnames mehr bekommen.

fsutil 8dot3name strip /s /l laufwerk:\pfad\
löscht auch die bereits erstellten 8.3 shortkeys....


btw: Totalcommander ist kein wirklicher einzusetzender Filemanager mehr- das ist ein Norton Commander Clown - der "NC" hatte mal zu echten Doszeiten wirklichen Sinn - heute ist das veralteter Kram - der sich an alte Regeln (siehe deine 8.3 Symtomatik) hält.

Gruß
Member: MrNetman
MrNetman Mar 30, 2011 at 11:44:38 (UTC)
Goto Top
Hallo pbelci
Habe statt %CD%, das nur den aktuellen Pfad an der der CMD ausgibt den Parameter "%~f" verwendet. Dieser gibt den aktuellen Pfad für die Datei mit an.
z.B: for %F in (*.jpg) do dir "%~fF" "%F" für Bilder
inklusive Unterverzeichnissen:
for /R %F in (*.jpg) do dir "%~fF" "%F"

Viel Glück
Member: pbelcl
pbelcl Mar 30, 2011 at 13:15:49 (UTC)
Goto Top
Hi Leute,

Hab mich mal dank eurer Infos, mit den %% Möglichkeiten des DIR Befehls näher auseinander gesetzt!
Das Ergebnis sieht so aus:

 
@echo off
chcp 1252>nul
for %%i in ("*.mp3") do echo %%~ni%%~xi>>%%~di%%~pi\_playlist.m3u  

Der Link ist zu diesem Batch ist in der "ButtonBar" meines TotalCommander verlinkt und funktioniert immer dort wo ich gerade stehe....

Danke für eure Tipps!!
Member: pbelcl
pbelcl Mar 30, 2011 at 13:18:54 (UTC)
Goto Top
Zitat von @60730:> btw: Totalcommander ist kein wirklicher einzusetzender Filemanager mehr

Nun das halt ich für ein schweres Gerücht, denn in meinem Fall war das Problem eher WIE ich die %CD% Variable auslese. Der TTC hat damit nix zu tun!
Du solltest das Teil übrigens mal ausprobieren bevor du es blind verurteilst face-wink

Danke trotzdem für deinen Tipp ....
Member: bastla
bastla Mar 30, 2011 at 13:20:55 (UTC)
Goto Top
... wobei Du noch etwas knapper
for %%i in ("*.mp3") do echo %%~nxi>>"%%~dpi\_playlist.m3u"
schreiben könntest ...

Grüße
bastla
Member: pbelcl
pbelcl Mar 30, 2011 at 13:23:21 (UTC)
Goto Top
Zitat von @bastla:
... wobei Du noch etwas knapper schreiben könntest ...

Perfekt bastla,
ich wußte doch dass du hier noch einen drauf setzen kannst face-wink
werde es gleich ändern, Danke!
Member: pbelcl
pbelcl Mar 30, 2011 at 13:29:38 (UTC)
Goto Top
Hab übrigens noch was rausgefunden:
mit:
dir *.mp3 /b >_playlist.m3u"

wärs auch gegangen, oder hat das irgendwelche versteckten Pferdefüße?
Member: pbelcl
pbelcl Mar 30, 2011 at 14:11:16 (UTC)
Goto Top
Pferdefuss schon gefunden ;-(

dir *.mp3 /b >_playlist.m3u"

überschreibt die alte Playlist, was ja so sein muss, funktioniert aber nicht Recursiv, sprich mit Unterordnern ...

for /r %%i in (*.mp3) do echo %%~nxi>>%%~dpi\_playlist.m3u"

funktioniert zwar wunderbar mit Unterordnern, fügt aber den ALTEN Playlisten nur neue EInträge hinzu, überschreibt diese aber nicht beim ersten Eintrag ;-(

Tja, nun bin ich doch noch nicht ganz fertig ....

Schön wär, wenn ich beides haben könnte.....
Member: bastla
bastla Mar 30, 2011 at 14:19:13 (UTC)
Goto Top
Hallo pbelcl!

Wie wär's mit:
del /s /q _playlist.m3u & for /r %%i in (*.mp3) do echo %%~nxi>>"%%~dpi\_playlist.m3u"
Alternative:
for /r %%i in (.) do dir /b "%%i\*.mp3">"%%i\_playlist.m3u"
Beides ungetestet ...

Grüße
bastla
Member: pbelcl
pbelcl Mar 30, 2011 at 15:57:54 (UTC)
Goto Top
Zitat von @bastla:>
for /r %%i in (.) do dir /b "%%i\*.mp3">"%%i\_playlist.m3u"
> 
Gefällt mir fast besser, denn da muss nix gelöscht werden. Bin mit dem DEL Befehl und SUB-Dirs immer SEHR vorsichtig !

Nun kommt der Perfektionismus etwas raus face-wink
Hab mal versucht zu erreichen dass nur in Ordnern eine ,m3u Datei erzeugt wird, wo auczh eine .mp3 Datei drin ist mit:
for /r %%i in (.) do (
if exist %%~dpi*.mp3 dir /b "%%i\*.mp3">"%%i\_playlist.m3u"
	)

Leider klappt das so noch nicht.
Ich denke ich werde meinen Perfektionistmus etwas zügeln, denn der Rest funktioniert SUPER, danke nochmal...
Member: bastla
bastla Mar 30, 2011 at 16:14:14 (UTC)
Goto Top
Hallo pbelcl!

Hinsichtlich des Löschen hatte ich zwar auch Bedenken, aber da ja gezielt nur Dateien des Namens "_playlist.m3u" entfernt und danach alle Unterordner wieder abgegrast werden, hielt ich es für vertretbar ...
Deine Schleife könnte auch so aussehen:
for /r %%i in (.) do if exist "%%i\*.mp3" dir /b "%%i\*.mp3">"%%i\_playlist.m3u"
Ansonsten als (etwas weniger elegante) Alternative:
for /r %%i in (.) do dir /b "%%i\*.mp3">nul 2>nul && dir /b "%%i\*.mp3">"%%i\_playlist.m3u"
Grüße
bastla
Member: pbelcl
pbelcl Mar 30, 2011 at 17:56:51 (UTC)
Goto Top
Ich hab gerade die elegantere Version ausprobier, funktioniert super!
Danke Bastla!!
Mitglied: 60730
60730 Mar 30, 2011 at 17:56:56 (UTC)
Goto Top
moin,
Zitat von @pbelcl:
> Zitat von @60730:> btw: Totalcommander ist kein wirklicher einzusetzender Filemanager mehr

Nun das halt ich für ein schweres Gerücht, denn in meinem Fall war das Problem eher WIE ich die %CD% Variable auslese.
Der TTC hat damit nix zu tun!
Du solltest das Teil übrigens mal ausprobieren bevor du es blind verurteilst face-wink
[OT]
schau mal auf meinen Avatar...
Ich hab nur eine Augenklappe - und die nur, weil das andere Auge sehr scharf sieht....
Das kommt davon, weil ich gerne weisse Schrift auf schwarzem Hintergrund lese und bekennender Gui Hasser bin face-wink
Glaubs mir einfach - ich bin so alt, wie du aussiehst face-wink
Meinen ersten Rechner hab ich auf den Tag genau vor 2 Tagen und 3 Jahrzehnten vor der Nase...(der hatte weniger Speicher als eine SIM Karte vom Handy - da lernt man sparsam mit Ressourcen zu sein)
[/OT]

Zitat von @pbelcl:
Hab übrigens noch was rausgefunden:
mit:
dir *.mp3 /b >_playlist.m3u"
naja - das ist aber auch schon unter Windows 98se der Weg gewesen, um "Q&D" m3u Dateien zu erstellen.
Nur - was soll das mit deinen Kurzen Dateinamen zu tun haben?

if not exist _playlist.m3u dir /n /b *.mp3>_playlist.m3u

Nur was willst du mit diesen m3u Dateien?
Da fehlt doch sinniges, wie #EXTM3U; #EXTINF und anderes, was man seit den Anfängen von mp3 eingeführt hat......

Danke trotzdem für deinen Tipp ....

yupp