tobiisfreaky
Goto Top

Buchstaben in Strings auslesen und ändern

Hallo Community,

ich habe eine vorhandene Batch-Datei, die mir alle Verzeichnisse einer Partition auflistet und in einer Text-Datei speichert. Beim Speichern (mehr als 255 Zeichen) werden alle Ä Ö Ü ß umbenannt in andere Zeichen, wie " (= ö)
Gibt es eine Möglichkeit diese Verzeichnisnamen so in eine TXT-Datei zu erfassen oder muss wirklich über eine 2. Batch "nachbesserungen" vorgenommen werden, indem die Sonderzeichen durch Ä Ü Ö etc umbenennt werden?
Es sind etwas mehr als 9000 Strings... die alle manuell zu ändern wäre etwas zeitaufwendig face-wink

Außerdem gibt es eine Möglichkeit wie man während einer Schleife (FOR /F) die Strings (in Variablen gesetzt) in "" setzen kann, somit Srings mit Leerzeichen auch erfasst werden und keine Abbruch erfolgt???
Also ich bin schon soweit gekommen und habe herausgefunden, dass FOR /F den String sich bis zu einem Leerzeichen merkt und danach in die nächste Zeile springt. Strings nach dem Leerzeichen werden nicht beachtet, auch wenn diese in "" gesetzt sind... face-sad


Mit freundlichen Grüßen

Tobi

Content-Key: 104071

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

Printed on: April 25, 2024 at 21:04 o'clock

Member: bastla
bastla Dec 15, 2008 at 08:44:16 (UTC)
Goto Top
Hallo TobiisFreaky!

Versuch es mit der folgenden Zeile am Anfang der ersten Batchdatei:
chcp 1252
Damit "for /f" Deine Strings nicht aufteilt, verwende
for /f "delims=" %%i in (...
Grüße
bastla
Member: Biber
Biber Dec 15, 2008 at 08:50:36 (UTC)
Goto Top
Moin TobiisFreaky,

vermutlich fehlt in Deiner vorhandenen, aber momentan sehr schlecht lesbaren Batchdatei eine Umstellung auf den Windows.Zeichensatz (Befehl "CHCP 1252").
Und ja, soweit ich weiss, kann man/frau die Token einer FOR/F-Anweisung in Anführungszeichen setzen.
Hilfreich dabei wäre das Wissen, was in diesem Falle der Token ist.

Magst Du Deinen Schnipsel mal veröffentlichen oder geht das nicht, solange er dem Nobelpreiskomittee in Stockholm zur Prüfung vorliegt?

Grüße
Biber
Member: TobiisFreaky
TobiisFreaky Dec 15, 2008 at 08:56:39 (UTC)
Goto Top
haha face-wink

hier der Batch-Inhalt:

Hier die readDir.bat:
DIR /s /b /ad E:\A62 > C:\readDIR_A62.txt


Und hier die Batch, die die ACL editieren soll:
FOR /F "delims=" %%i IN (C:\readDIR_A62.txt) DO @cacls %%i /E /G BENUTZERNAME:F  
pause

EDIT

ach wie blöd ich bin... delims hatte ich ja bereits in Verwendung, aber ich hätte mal besser ein paar Leerzeichen machen sollen grml..


FOR /F "delims=   " %%i IN (C:\readDIR_A62.txt) DO @cacls "%%i" /E /G BENUTZERNAME:F  
pause
Das ist der Code nun und er funktioniert.

Vielen Dank Jungs!

/EDIT
Mit freundlichen Grüßen

Tobi