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-ID: 163577

Url: https://administrator.de/forum/variable-cd-ohne-tilde-auslesen-163577.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

bastla
bastla 29.03.2011 um 15:45:56 Uhr
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
60730
60730 29.03.2011 um 17:27:35 Uhr
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ß
MrNetman
MrNetman 30.03.2011 um 13:44:38 Uhr
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
pbelcl
pbelcl 30.03.2011 um 15:15:49 Uhr
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!!
pbelcl
pbelcl 30.03.2011 um 15:18:54 Uhr
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 ....
bastla
bastla 30.03.2011 um 15:20:55 Uhr
Goto Top
... wobei Du noch etwas knapper
for %%i in ("*.mp3") do echo %%~nxi>>"%%~dpi\_playlist.m3u"
schreiben könntest ...

Grüße
bastla
pbelcl
pbelcl 30.03.2011 um 15:23:21 Uhr
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!
pbelcl
pbelcl 30.03.2011 um 15:29:38 Uhr
Goto Top
Hab übrigens noch was rausgefunden:
mit:
dir *.mp3 /b >_playlist.m3u"

wärs auch gegangen, oder hat das irgendwelche versteckten Pferdefüße?
pbelcl
pbelcl 30.03.2011 um 16:11:16 Uhr
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.....
bastla
bastla 30.03.2011 um 16:19:13 Uhr
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
pbelcl
pbelcl 30.03.2011 um 17:57:54 Uhr
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...
bastla
bastla 30.03.2011 um 18:14:14 Uhr
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
pbelcl
pbelcl 30.03.2011 um 19:56:51 Uhr
Goto Top
Ich hab gerade die elegantere Version ausprobier, funktioniert super!
Danke Bastla!!
60730
60730 30.03.2011 um 19:56:56 Uhr
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