jschneider
Goto Top

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


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 face-wink

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

Content-ID: 96486

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Biber
Biber 09.09.2008 um 16:22:45 Uhr
Goto Top
Moin jschneider

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  
Ausgabe
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
miniversum
miniversum 09.09.2008 um 17:25:42 Uhr
Goto Top
also bei mir funktionierts auch einfach so:
FOR /F "delims=" %i in ('dir /b /a:d') do @echo %~snxi   
jschneider
jschneider 10.09.2008 um 09:17:23 Uhr
Goto Top
super

dank an euch beide

frage mich nur gerade ob das %~snxi bzw %~snxi zum Allgemeinwissen gehört bzw. in welcher Hilfe man das hätte finden können/müssen

face-smile
miniversum
miniversum 10.09.2008 um 09:39:08 Uhr
Goto Top
Das steht in der Hilfe zum For-Befehl ganz unten.
Ob es zum allgemeinwissen gehört weiß ich nicht aber es ist oft nützlich wenn man mit dateien arbeitet.