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

Variable CD ohne Tilde auslesen ?

Frage Entwicklung Batch & Shell

Mitglied: pbelcl

pbelcl (Level 1) - Jetzt verbinden

29.03.2011 um 15:38 Uhr, 4595 Aufrufe, 14 Kommentare

%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??
Mitglied: bastla
29.03.2011 um 15:45 Uhr
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
Bitte warten ..
Mitglied: 60730
29.03.2011 um 17:27 Uhr
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ß
Bitte warten ..
Mitglied: MrNetman
30.03.2011 um 13:44 Uhr
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
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 15:15 Uhr
Hi Leute,

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

01.
  
02.
@echo off 
03.
chcp 1252>nul 
04.
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!!
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 15:18 Uhr
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

Danke trotzdem für deinen Tipp ....
Bitte warten ..
Mitglied: bastla
30.03.2011 um 15:20 Uhr
... wobei Du noch etwas knapper
for %%i in ("*.mp3") do echo %%~nxi>>"%%~dpi\_playlist.m3u"
schreiben könntest ...

Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 15:23 Uhr
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
werde es gleich ändern, Danke!
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 15:29 Uhr
Hab übrigens noch was rausgefunden:
mit:
dir *.mp3 /b >_playlist.m3u"
wärs auch gegangen, oder hat das irgendwelche versteckten Pferdefüße?
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 16:11 Uhr
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.....
Bitte warten ..
Mitglied: bastla
30.03.2011 um 16:19 Uhr
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
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 17:57 Uhr
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
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...
Bitte warten ..
Mitglied: bastla
30.03.2011 um 18:14 Uhr
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
Bitte warten ..
Mitglied: pbelcl
30.03.2011 um 19:56 Uhr
Ich hab gerade die elegantere Version ausprobier, funktioniert super!
Danke Bastla!!
Bitte warten ..
Mitglied: 60730
30.03.2011 um 19:56 Uhr
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
[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
Glaubs mir einfach - ich bin so alt, wie du aussiehst
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?

01.
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Batch & Shell
gelöst Variable aus ini Datei auslesen und weiterverwenden (17)

Frage von n0cturne zum Thema Batch & Shell ...

Batch & Shell
gelöst DWORD (Name immer verschieden) eines RegKeys auslesen und in Variable schreiben (2)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mehrere Ordnernamen auslesen und in eine Variable schreiben (5)

Frage von schmitho zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...