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

Frage Entwicklung Batch & Shell

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, 3767 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
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 2 StundenRouter & Routing

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 9 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 13 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...