WinFuture-Forum.de: Batchdateien: Strings Verarbeiten - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batchdateien: Strings Verarbeiten


#1 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 27. Mai 2007 - 17:58

Wie bearbeite ich Strings?

Erstens geht es mir darum, wie
FOR /F "tokens=2*" %%A IN ('REG QUERY "HKCU\software\valve\steam" /v ModInstallPath') DO SET steamdir=%%B

genau funzt, wie ich also Konsolenausgaben in Variablen umwandel und zweitens wie ich einen String prozessiere. Im obigen Beispiel kommt zB ein Pfad raus, nu würd ich gern einen Teil vom Pfad durch einen anderen ersetzen.
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 28. Mai 2007 - 12:43

Zum Verstehen des Befehls empfiehlt sich die Lektüre von
FOR /?

und
REG QUERY /?


REG QUERY gibt den im Schlüssel HKCU\software\valve\steam\ModInstallPath gespeicherten Wert zurück.
FOR trennt nun den Wert nach "Wörtern" auf und beginnt dabei mit dem 2. Wort (wegen tokens=2*). %%A ist das 2. Wort vom Wert %%B ist das 3. Wort vom Wert, %%C ist das 4te Wort, usw.

Als "Wort" ist eine Zeichenkette ("Token") zu verstehen, welche keines der sog. Trennzeichen enthält. Trennzeichen sind standardmässig Komma und Leerzeichen, wenn nicht anders bestimmt.

In deinem Fall wird also das 3. Wort (was laut deiner Beschreibung ein Pfad ist) der Umgebungsvariable steamdir zugeordnet.

Ein Beispiel welches in cmd ausprobiert werden kann:
C:\Users\diewie>FOR /F "tokens=2*" %A IN ('echo test1 test2 test3 test4') DO @echo %A

gibt test2 zurück. Würde bei @echo %B stehen würde er test3 zurückgeben.
Würde man tokens=1* setzen, erhielte man test1, bei @echo %B wiederum test2.

Wichtig ist, dass in Batch Skripten %%A statt %A usw. geschrieben wird.

Wenn du nun von steamdir was ersetzen willst, dann kannst du das nach dem FOR mit folgendem SET machen:
SET steamdir=%steamdir:Das_ist_zu_ersetzen=mit_dem%


Hier wieder ein Beispiel: (Pfad wurde so gesetzt: SET testpfad=C:\de\eeee\ffff\ggghhhh\
SET testpfad=%testpfad:eeee=x567%

nun lautet testpfad: C:\de\x567\ffff\ggghhhh\.


Ich hoffe das hilft weiter.

Gruß,
Stefan
0

#3 Mitglied ist offline   Kirill 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.590
  • Beigetreten: 04. Dezember 06
  • Reputation: 121
  • Geschlecht:Männlich
  • Wohnort:BT

geschrieben 28. Mai 2007 - 13:04

Astrein, danke! :D
Most rethrashing{
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0