h41msh1c0r
Goto Top

Fehler bei For schleife, prozentprozent i kann syntaktisch nicht verwendet werden

Hi@All,

Ziel:

- Textdatei suchen
- wenn gefunden Zeichenkette suchen
- wenn gefunden Alles was dahinter in der Zeile Steht mit vorgegebenen Wert vergleichen
- wenn Wert korrekt, dann nach nächster Zeichenkette suchen
- alles rauskopieren was dort hinter dem "=" steht und in eine Variable abspeichern


1. Schritt:

'findstr "AppName" "c:\test\verzeichnis1\test.ini" -> liefert mir die Zeile  

Da ich aber alle Unterverzeichnisse durchlaufen muss pack ich das in eine Schleife:

for /f "delims=," %%i in ('findstr "AppName" "test.ini"') do @set ln=%%i  
echo %ln%

Hier sagt er mir ständig ich kann kann %%i syntaktisch nicht verwenden.

%%i ist doch nur die Variable in die das Ergenis geschrieben wird und 2*% ist doch korrekt oder?

VG

Content-Key: 183322

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

Printed on: April 26, 2024 at 00:04 o'clock

Member: bastla
bastla Apr 10, 2012 at 14:30:55 (UTC)
Goto Top
Hallo H41mSh1C0R!
Hier sagt er mir ständig ich kann kann %%i syntaktisch nicht verwenden.
Du führst die Zeile doch als Bestandteil eines Batches aus? Falls nicht (also bei Direkteingabe in die CMD-Shell) ist nur ein Prozentzeichen zu verwenden ...
Wenn Du übrigens Unterverzeichnisse durchlaufen und in allen gefundenen Dateien namens "test.ini" nach "AppName" suchen willst, müsste das eher so aussehen:
for /f "delims=" %%i in ('dir /s/b "c:\test\verzeichnis\test.ini"') do for /f "delims=," %%a in ('findstr "AppName" "%%i"') do echo %%a
wobei in diesem Fall jener Teil der gefundenen Zeilen, der vor dem ersten Komma steht, als %%a (innerhalb der Schleife) zur Verfügung stünde ...

Besser nachvollziehbar wird Dein Vorhaben mit Beispieldaten ...

Grüße
bastla
Member: H41mSh1C0R
H41mSh1C0R Apr 10, 2012 at 14:51:56 (UTC)
Goto Top
Hi Bastla,

als Beispiel:

Ich habe mehrere Programme und die werden auf mehreren Rechnern installiert. Leider erzeugt jede Installation in einem bestimmten Verzeichnis einen Unterordner mit einer PC spezifischen Zeichenkette. Der Inhalt in diesem Ordner ist immer gleich strukturiert, allerdings NICHT der Ordnername.

Damit die cmd auf jeden PC genutzt werden kann muss ich halt so die ini "finden" und mir die gewünschten Werte holen.

 for /f "delims=" %%i in ('dir /s/b %DIR%') do for /f "delims=," %%a in ('findstr "AppName" "%%i"') do echo %%a   

Wenn ich das so in die CMD packe bekomme ich solange 100% CPU Last und bergeweise cmd Instanzen. =(

In der ersten for Schleife muss doch nur der Startpfad rein also indem Fall der Ordner indem die Unterordner mit den PC spezifischen Zeichenketten drinnen stehen.

Gruß
Member: bastla
bastla Apr 10, 2012 at 15:00:44 (UTC)
Goto Top
Hallo H41mSh1C0R!

Du meinst mit
Wenn ich das so in die CMD packe
eine cmd-Datei, nehme ich an - dann müsste es aber doch auch vorher schon Code-Zeilen geben (oder existiert in Deiner Umgebung auf jedem Rechner bereits eine Variable %DIR%?) - poste die doch bitte auch ...
In der ersten for Schleife muss doch nur der Startpfad rein also indem Fall der Ordner indem die Unterordner mit den PC spezifischen Zeichenketten drinnen stehen.
Was in die erste Schleife rein sollte, kannst Du ja meinem Vorschlag entnehmen (und sag nicht, auch die ini-Dateien hätten noch unterschiedliche Namen) ...
Abgesehen davon könnte ich mir als einzigen Grund für "bergeweise cmd Instanzen" nur vorstellen, dass Du die Batchdatei ausgerechnet "findstr.cmd" genannt hättest ...

Grüße
bastla
Member: H41mSh1C0R
H41mSh1C0R Apr 10, 2012 at 15:05:08 (UTC)
Goto Top
@echo off & setlocal 

SET DIR="C:\Users\Nutzer\Desktop\Appz\010_installShieldProdukt\"  
SET FILE=setup.ini
SET AppName="Name"  
SET GUID="test"  

for /f "delims=" %%i in ('dir /s/b %DIR%%FILE%') do for /f "delims=," %%a in ('findstr "AppName" "%%i"') do echo %%a  


----
Abgesehen davon könnte ich mir als einzigen Grund für "bergeweise cmd Instanzen" nur
vorstellen, dass Du die Batchdatei ausgerechnet "findstr.cmd" genannt hättest ...


*hust, schande über mein Haupt*

ich hab die cmd wirklich so benannt LÖL

PS:

Funktioniert danke. =) Muss das nun grad noch beiseite packen, hab noch was anderes auf den Tisch bekommen. Ich mach dann hier morgen weiter. =)
Member: bastla
bastla Apr 10, 2012 at 15:09:36 (UTC)
Goto Top
Hallo H41mSh1C0R!

Ich würde das eher so schreiben:
@echo on & setlocal 

SET "DIR=C:\Users\Nutzer\Desktop\Appz\010_installShieldProdukt"  
SET "FILE=setup.ini"  
SET "AppName=Name"  
SET "GUID=test"  

for /f "delims=" %%i in ('dir /s/b "%DIR%\%FILE%"') do for /f "delims=," %%a in ('findstr "%AppName%" "%%i"') do echo %%a  
und dem "findstr" ev noch ein "/i" spendieren ...

Grüße
bastla
Member: H41mSh1C0R
H41mSh1C0R Apr 10, 2012 at 15:13:29 (UTC)
Goto Top
Die SET Einträge zwingend in ""?

Danke für deine schnelle Hilfe.

vg
Member: bastla
bastla Apr 10, 2012 at 15:17:04 (UTC)
Goto Top
Hallo H41mSh1C0R!
Die SET Einträge zwingend in ""?
Zwingend: nein
Empfehlenswert: grundsätzlich sehr

Grüße
bastla