2016-05-24 4 views
0

Morgen,Batch wie Teil eines Ordnernamen aus dem Verzeichnis lesen

Id mag alle Ordnernamen aus einem Verzeichnis lesen, aber dann Teil dieses Namens in eine Textdatei extrahieren.

z.

Folder \ Benutzer \ Musik hat diesen Ordner unter: Tes125559-blah345534 tes125558-blah235235

Kennzeichnung mag 3 Zeichen extrahieren, bis das -, so für Tes125559-blah345534 im nach den 125.559 gerade gestellt werden in eine Textdatei.

Es ist immer 3 Zeichen in dann einem 6-stellige Zahlenwert, die

Jede Hilfe braucht Grabbing wird sehr geschätzt, so weit ich nur das Verzeichnis lesen:

dir/b> file.txt

Antwort

1

etwas wie das folgende sollte es tun:

@echo off 
     setlocal enabledelayedexpansion 
     if exist file.txt del file.txt 
     for /d %%a in (*) do (
       set DIR=%%a 
       echo !DIR:~3,6!>>file.txt 
     ) 

die for Schleife iteriert über alle Verzeichnisse (im aktuellen Verzeichnis) . Für jede Datei speichert sie den Verzeichnisnamen in DIR und verwendet dann eine "Sub-String" -Syntax, um sechs Zeichen beginnend bei der vierten zu extrahieren (die 3 ist, weil sie von Null aus zählt - siehe SET /? für weitere Informationen).

Die Verwendung von !, um dieses Konstrukt (und enabledelayedexpansion an der Spitze des Skripts) ist, weil die normale Art und Weise auf Umgebungsvariablen des Verweises (mit %) würde den Wert %DIR% jedes Mal um die for Schleife nicht neu bewerten (für weitere Details siehe cmd /?).

Da jedes Verzeichnis an die file.txt angehängt ist, löschen wir es vor dem Start (falls es existiert).

+0

Perfekt! Funktioniert gut. Das ist 100% was ich gesucht habe. Ich danke dir sehr! –

Verwandte Themen