lange und kurze dateinamen verarbeiten
Hallo,
ich benötige eine Funktion mit der ich den normalen (langen) dateinamen auslese und den dazugehörigen kurzen Dateinamen (falls vorhanden)
dir /x liefert mir ja schonmal eine Liste meiner verzeichnisse und stellt die kurzen dateinamen dar , sofern vorhanden
wenn jedoch kein kurzer dateiname vorhanden ist ist die stelle quasi frei und mein Leerzeichen delimiter wird nicht erkannt
kurze Verzeichnisnamen werden halt nur angezeigt, wenn der dateiname selber länger als 8 Zeichen ist
d.h. wenn mit obigen code gesucht wird ist
%%h der normale Verzeichnisname , wenn der verzeichnisname kürzer als 8 Zeichen ist und %%i nicht belegt
%%h der kurze Verzeichnisname, wenn der Verzeichnisname länger als 8 Zeichen ist und %%i der Lange Verzeichnisname
so kann ich nicht arbeiten
ich könnte jetzt irgendwie abfragen, ob %%i überhaupt inhalt hat und in diesem Falle mir das hinbiegen und so .. aber das geht doch bestimmt besser oder ?
Gruß, Jan
ich benötige eine Funktion mit der ich den normalen (langen) dateinamen auslese und den dazugehörigen kurzen Dateinamen (falls vorhanden)
dir /x liefert mir ja schonmal eine Liste meiner verzeichnisse und stellt die kurzen dateinamen dar , sofern vorhanden
wenn jedoch kein kurzer dateiname vorhanden ist ist die stelle quasi frei und mein Leerzeichen delimiter wird nicht erkannt
kurze Verzeichnisnamen werden halt nur angezeigt, wenn der dateiname selber länger als 8 Zeichen ist
set qLW=L:
for /f "skip=7 tokens=1,2,3,4,5,6,7 delims= " %%e in ('dir /d /x /a:d %qLW%\') do (
echo ------------------------------------------------
echo f %%f
echo g %%g
echo h %%h
echo i %%i
echo j %%j
echo k %%k
)
d.h. wenn mit obigen code gesucht wird ist
%%h der normale Verzeichnisname , wenn der verzeichnisname kürzer als 8 Zeichen ist und %%i nicht belegt
%%h der kurze Verzeichnisname, wenn der Verzeichnisname länger als 8 Zeichen ist und %%i der Lange Verzeichnisname
so kann ich nicht arbeiten
ich könnte jetzt irgendwie abfragen, ob %%i überhaupt inhalt hat und in diesem Falle mir das hinbiegen und so .. aber das geht doch bestimmt besser oder ?
Gruß, Jan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96486
Url: https://administrator.de/contentid/96486
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
Moin jschneider
vom CMD-Prompt könnte es so aussehen (Beispiel):
Ausgabe
Batch-Skizze:
Ich habe es jetzt mal auf alle Unterverzeichnisse T* in d:\Temp reduziert, weil da einige mit "langen" und "kurzen" Namen dabei sind.
Wie Du schon richtig vermutet hast, wirst Du kaum um eine IF-Konstruktion herumkommen.
Grüße
Biber
vom CMD-Prompt könnte es so aussehen (Beispiel):
for /d %i in (d:\temp\t*) do @if /i "%~snxi" NEQ "%~nxi" @(echo %~nxi [%~snxi]) else @echo %~nxi
templogs
test
test22
testheute [TESTHE~1]
tomove
tomove1up [TOMOVE~1]
tomove2up [TOMOVE~2]
Batch-Skizze:
@echo off
...
for /d %%i in (d:\temp\t*) do (
if /i "%%~snxi" NEQ "%%~nxi" (
echo %%~nxi [%%~snxi]
) else (
@echo %%~nxi
))
Ich habe es jetzt mal auf alle Unterverzeichnisse T* in d:\Temp reduziert, weil da einige mit "langen" und "kurzen" Namen dabei sind.
Wie Du schon richtig vermutet hast, wirst Du kaum um eine IF-Konstruktion herumkommen.
Grüße
Biber