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-Key: 96486

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

Printed on: April 24, 2024 at 17:04 o'clock

Member: Biber
Biber Sep 09, 2008 at 14:22:45 (UTC)
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
Member: miniversum
miniversum Sep 09, 2008 at 15:25:42 (UTC)
Goto Top
also bei mir funktionierts auch einfach so:
FOR /F "delims=" %i in ('dir /b /a:d') do @echo %~snxi   
Member: jschneider
jschneider Sep 10, 2008 at 07:17:23 (UTC)
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
Member: miniversum
miniversum Sep 10, 2008 at 07:39:08 (UTC)
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.