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

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

Frage Entwicklung Batch & Shell

Mitglied: H41mSh1C0R

H41mSh1C0R (Level 2) - Jetzt verbinden

10.04.2012, aktualisiert 16:03 Uhr, 4362 Aufrufe, 7 Kommentare

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:

01.
'findstr "AppName" "c:\test\verzeichnis1\test.ini" -> liefert mir die Zeile
Da ich aber alle Unterverzeichnisse durchlaufen muss pack ich das in eine Schleife:

01.
for /f "delims=," %%i in ('findstr "AppName" "test.ini"') do @set ln=%%i 
02.
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
Mitglied: bastla
10.04.2012 um 16:30 Uhr
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
Bitte warten ..
Mitglied: H41mSh1C0R
10.04.2012 um 16:51 Uhr
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.

01.
 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ß
Bitte warten ..
Mitglied: bastla
10.04.2012 um 17:00 Uhr
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
Bitte warten ..
Mitglied: H41mSh1C0R
10.04.2012 um 17:05 Uhr
01.
@echo off & setlocal  
02.
 
03.
SET DIR="C:\Users\Nutzer\Desktop\Appz\010_installShieldProdukt\" 
04.
SET FILE=setup.ini 
05.
SET AppName="Name" 
06.
SET GUID="test" 
07.
 
08.
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. =)
Bitte warten ..
Mitglied: bastla
10.04.2012 um 17:09 Uhr
Hallo H41mSh1C0R!

Ich würde das eher so schreiben:
01.
@echo on & setlocal  
02.
 
03.
SET "DIR=C:\Users\Nutzer\Desktop\Appz\010_installShieldProdukt" 
04.
SET "FILE=setup.ini" 
05.
SET "AppName=Name" 
06.
SET "GUID=test" 
07.
 
08.
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
Bitte warten ..
Mitglied: H41mSh1C0R
10.04.2012 um 17:13 Uhr
Die SET Einträge zwingend in ""?

Danke für deine schnelle Hilfe.

vg
Bitte warten ..
Mitglied: bastla
10.04.2012 um 17:17 Uhr
Hallo H41mSh1C0R!
Die SET Einträge zwingend in ""?
Zwingend: nein
Empfehlenswert: grundsätzlich sehr

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Fehler in Schleife (2)

Frage von miczar zum Thema Batch & Shell ...

Hyper-V
gelöst Fehler auf Hyper-V nach Tausch eines Mainboard und Raid-Controllers (17)

Frage von Henere zum Thema Hyper-V ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...