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

lange und kurze dateinamen verarbeiten

Frage Entwicklung Batch & Shell

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

09.09.2008, aktualisiert 10.09.2008, 6252 Aufrufe, 4 Kommentare

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


01.
set qLW=L: 
02.
 
03.
for /f "skip=7 tokens=1,2,3,4,5,6,7 delims= " %%e in ('dir /d /x /a:d %qLW%\') do ( 
04.
 echo  ------------------------------------------------ 
05.
 echo f  %%f 
06.
 echo g  %%g 
07.
 echo h  %%h 
08.
 echo i  %%i 
09.
 echo j  %%j 
10.
 echo k  %%k 
11.
)

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
Mitglied: Biber
09.09.2008 um 16:22 Uhr
Moin jschneider

vom CMD-Prompt könnte es so aussehen (Beispiel):
01.
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:
01.
@echo off 
02.
... 
03.
for /d %%i in (d:\temp\t*) do ( 
04.
     if /i "%%~snxi" NEQ "%%~nxi"  ( 
05.
          echo %%~nxi [%%~snxi] 
06.
      ) else ( 
07.
 @echo %%~nxi 
08.
))


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

Bitte warten ..
Mitglied: miniversum
10.09.2008 um 09:39 Uhr
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.
Bitte warten ..
Neuester Wissensbeitrag
Router & Routing

192.168er Adresse im öffentlichen Netz

(2)

Erfahrungsbericht von visco-c zum Thema Router & Routing ...

Ähnliche Inhalte
Batch & Shell
Vergleich einer Zeichenfolge in zwei Dateinamen (1)

Frage von hongziehong zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien (PDF) umbenennen via batch, teilw. Dateinamen übernehmen, neues Präfix (6)

Frage von brause1701 zum Thema Batch & Shell ...

CPU, RAM, Mainboards
gelöst PC braucht lange zum initialisieren vor dem Booten (9)

Frage von Markowitsch zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (29)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (22)

Frage von Driphex zum Thema Exchange Server ...

Hyper-V
HYPER V und USB (16)

Frage von Hendrik2586 zum Thema Hyper-V ...

SAN, NAS, DAS
Backupserver für KMU (14)

Frage von Leo-le zum Thema SAN, NAS, DAS ...