Top-Themen

Aktuelle Themen (A bis Z)

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 Werte aus FOR-Schleife abfragen bzw. abfangen

Mitglied: der-blob

der-blob (Level 1) - Jetzt verbinden

14.05.2011, aktualisiert 12:22 Uhr, 3775 Aufrufe, 4 Kommentare

Ich habe eine kleine Datei mit mehren Zeilen, ich muss die Zeilen mit verschiedenen sachen berechnen & ersetzen, dies ist auch kein problem, mit meiner folgenden lösung


01.
..... 
02.
.... 
03.
for /f "usebackq delims=" %%i in ("%alterdatei%") do ( 
04.
    for /f "tokens=2-4 delims=, " %%a in ("%%i") do ( 
05.
        set "Done=" 
06.
        if "%%a"=="WERT1"( echo 2%%b,9%%c, test42 ) 
07.
		set "Done=true" 
08.
09.
        if "%%a"=="WERT2" ( 
10.
??? was muss hier rein? 
11.
12.
... 
13.
 
14.
15.
 
16.
 
Das ganze gerechne usw. klappt auch für jede zeile, jedoch ist das problem, das wenn

WERT2

in einer zeile steht ich diverse parameter aus WERT1 benötige.

datei sieht wie folgt aus:

WERT1
WERT1
irgendwas ....
WERT1
WERT2
WERT1
usw.

wenn ich nun WERT2 bearbeiten möchte muss der WERT1 welche _VOR_ WERT2 steht gelöscht werden! Und zudem benötige ich das %%b aus WERT1

p.s ist es möglich Rechnungen (cosinus / +/- ...) in der FOR schleife mit einzuarbeiten? - habe diese z.zt. nur seperat, wär halt nur ne "schönheitsanpassung" das mit den Rechnungen , dies ist aber nur eine optionale kleine frage am rande

Ich habe in der SUFU leider nichts genaues gefunden womit ich weiter komme... - vielleicht bin ich einfach nur zu blöd dafür :S - was ich nicht Hoffe.
Mitglied: bastla
14.05.2011 um 12:44 Uhr
Hallo der-blob und willkommen im Forum!
muss der WERT1 welche _VOR_ WERT2 steht gelöscht werden!
Was meinst Du damit - aus der Datei gelöscht?

Ansonsten:
Und zudem benötige ich das %%b aus WERT1
Füge
  • am Anfang (möglichst ohne Tippfehler, wie es mir hier in der ersten Fassung gelungen war )
setlocal enabledelayedexpansion
  • nach Zeile 7
set "ParamB=%%b"
  • und im "WERT2"-Teil die benötigte Verarbeitung (als Beispiel nur eine Ausgabe)
echo !ParamB!
hinzu.
ist es möglich Rechnungen (cosinus / +/- ...) in der FOR schleife mit einzuarbeiten?
Was per CMD berechnet werden kann, siehst Du mit
set /?
ab
Die /A-Option gibt an ...
Grüße
bastla

P.S.: Falls Du nicht noch irgendwo die gesamte Zeile (also "%%i") am Stück brauchst, sollten sich eigentlich
01.
for /f "usebackq delims=" %%i in ("%alterdatei%") do ( 
02.
    for /f "tokens=2-4 delims=, " %%a in ("%%i") do (
zu
01.
for /f "usebackq tokens=2-4 delims=, " %%a in ("%alterdatei%") do (
zusammenfassen lassen ...
Bitte warten ..
Mitglied: der-blob
14.05.2011 um 15:02 Uhr
VIELEN HERZLICHEN DANK!!!!!
so ähnlich hatte ich es schon, nur da hatte mir das
01.
enabledelayedexpansion
gefehlt!
zwecks mit den SET rechnen habe ich schon drin gehabt, nur anderer stelle, nun klappt dies auch - war nen fehler meiner seits.



und das mit dem wert löschen, die datei enthält ja mehrfach WERT1 - dieser soll auch drinne bleiben jedoch wenn WERT2 folgt soll wert1 gelöscht werden:

vorher:

WERT1
WERT1
irgendwas ....
WERT1
WERT2
WERT1
usw.

nacher:
WERT1
WERT1
irgendwas ....
WERT2
WERT1
usw.


der WERT! welcher in der Zeile vor WERT2 steht soll komplett (also ganze zeile) gelöscht werden, ich bekomm das nur hin das er immer immer ALLE zeilen mit WERT1 löscht, jedoch nicht nut die , welche WERT2 als folgezeile haben.

denn wenn ich über findstr gehe und die zeilen in extra bzw. neue datei schreibe übernimmt er ja auch die WERT1 zeilen welche vor WERT2 zeilen stehen...

ich hoffe ich habe es nun verständlich geschrieben.
Bitte warten ..
Mitglied: bastla
14.05.2011 um 18:09 Uhr
Hallo der-blob!

Etwa so (mit Deinem "vorher"-Beispiel als Inhalt der "Vorher.txt" kurz getestet):
01.
@echo off & setlocal 
02.
set "Ein=Vorher.txt" 
03.
set "Aus=Nachher.txt" 
04.
set "Suche1=WERT1" 
05.
set "Suche2=WERT2" 
06.
 
07.
set "Zeile=" 
08.
del "%Aus%" 2>nul 
09.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do call :ProcessLine "%%j" 
10.
if defined Zeile >>"%Aus%" echo %Zeile% 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
echo %1|findstr "%Suche2%">nul && goto :Ausgabe 
15.
if defined Zeile >>"%Aus%" echo %Zeile% 
16.
echo %1|findstr "%Suche1%">nul && ( 
17.
    set "Zeile=%~1" 
18.
    goto :eof 
19.
20.
:Ausgabe 
21.
>>"%Aus%" echo\%~1 
22.
set "Zeile=" 
23.
goto :eof
Es wird für jede Zeile (auch wenn es eine Leerzeile ist) der "%Ein%"-Datei das Unterprogramm ":ProcessLine" mit Übergabe der Zeile (unter Anführungszeichen) als Parameter %1 aufgerufen.

Wenn diese Zeile "WERT2" enthält (falls die Überprüfung auf "nur aus WERT2 besteht" vorzunehmen wäre, könnte als Zeile 14
if %1=="%Suche2%" goto :Ausgabe
verwendet werden), wird sie ausgegeben und eine ev zwischengespeicherte Zeile (%Zeile%) mit "WERT1" wird verworfen.

Enthält die Zeile nicht "WERT2", wird zunächst eine ev zwischengespeicherte Zeile (%Zeile%) ausgegeben.

Dann wird geprüft, ob die aktuelle Zeile "WERT1" enthält; wenn ja, wird die Zeile zwischengespeichert und die Verarbeitung beendet (= Rücksprung aus dem Unterprogramm mit "goto :eof").

Enthält die aktuelle Zeile nicht "WERT1", wird sie ausgegeben und eine ev zwischengespeicherte Zeile gelöscht (wurde ja bereits ausgegeben oder ohnehin nicht benötigt).
Anzumerken wäre noch, dass Du Dich hinsichtlich des Inhaltes der Zeilen sehr bedeckt gehalten hast und ich daher nicht weiß (und nicht berücksichtigen konnte) , ob/dass zB eine Zeile mit einem ":" beginnt oder Sonderzeichen enthält ...

Grüße
bastla
Bitte warten ..
Mitglied: der-blob
14.05.2011 um 18:26 Uhr
vielen herzlichen dank, klappt 100%ig

und vielen dank für die schnelle antwort, dir noch ein schönes wochenende

grüße, der blob
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Mehrere Werte aus FOR Schleife in eine Variable

gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Also ich komm einfach nicht weiter. Folgendes Problem. Meine aktueller String lautet so: Das Funktioniert auch. Nur ist ...

Batch & Shell

Variablen außerhalb einer For Schleife abfragen

gelöst Frage von Michael-24Batch & Shell3 Kommentare

Hallo miteinander, ich habe ein Problem, bei dem ich überhaupt nicht weiter komme. Ich möche ein kleine Batchdatei erstellen, ...

Batch & Shell

For-Schleife Bedingung "nicht erfüllt" abfragen

Frage von BatchNeulingBatch & Shell8 Kommentare

Hallo zusammen, dieses Forum hat mir schon des öteren weiter geholfen. Leider finde ich auch nach intensiver Suche noch ...

Batch & Shell

Abfrage ERRORLEVEL springt aus der FOR Schleife

gelöst Frage von GalindieselBatch & Shell8 Kommentare

Liebe Gemeinde, ich habe eine kleine batch geschrieben, die aus einer liste (IPs) heraus Laufwerke mappen soll, darauf dann ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 5 MinutenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 10 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 10 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 11 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...