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

Forschleife (Batch) nur letzte Wert wird ausgegeben

Frage Entwicklung Batch & Shell

Mitglied: Backspace

Backspace (Level 1) - Jetzt verbinden

20.12.2010 um 16:43 Uhr, 4782 Aufrufe, 6 Kommentare

Hallo,

01.
for /f "tokens=1,5" %%a in (Pfad1................................) do ( 
02.
 
03.
for /f "tokens=7" %%b in (Pfad2..........................) do set FREE=%%b 
04.
 
05.
wget "http:......"   )
Zeile 3 (die zweite verschachtelte Forschleife) aus obigem Code:

es wird jeweils nur der letzte Wert ausgegeben, alle anderen Werte werden durch den letzten überschrieben.


Danke


Gruß

Backspace
Mitglied: 60730
20.12.2010 um 16:50 Uhr
moin,

  • wenn du eine Schleife mit "tokens=1,5" baust - und als Laufvariable %a nimmst - was genau passiert denn da?
- genau der erste Wert ist %a und der zweite, der an 5. Stelle liegt %b

  • Von daher kannst du keine doppelte Schleife dranhängen und da auch %b benutzen.

Btw:
  • Das ist jetzt der zweite Anlauf mit deinem "psinfo" & Wget - läßt du uns andere auch mal dran teilhaben, was das ganze werden wird?
Denn mit Verlaub - da einen "Sinn" dahinter zu sehen, dass kann keiner - also wirds mit dem helfen auch schwer.
  • do set FREE=%%b - weißt du aber schon, dass das "so" nur einmal geht - schau dir mal die Anleitung zu den Schleifchen an - da hat sich einer Mühe gegeben

  • Vergleiche evtl. auch mal die Länge und den Informationsinhalt deiner Frage, die eigentlich nur Hallo und 2 zeilen um einen 3 zeiligen zerschnippselten Schnippsel ist und meine- Antwort....

Gruß
Bitte warten ..
Mitglied: Backspace
20.12.2010 um 17:43 Uhr
Hallo,

das mit dem Kurz und Knapp war eigentlich gut gemeint, damit nicht allzuviel zum lesen da steht.

Es geht hier um eine Projektarbeit, die freien Speicher ausliest (heterogene Systeme), bei zuwenig Speicher eine Warnung per Mail versendet etc..
Es werden dabei zum Teil wieder neue Vorgaben gemacht, die ich dann entsprechend umsetzen muß, wie auch z.B. die Integration von Sicherheitsfunktionen etc..


Der Code, den ich oben geschrieben habe, ist mehr allgemein gehalten, insbesondere was die Vergabe der Variablen angeht, im Originalcode bei mir habe ich nicht %%a, %%b gewählt, sondern sehr weit auseinanderliegende Buchstaben, hab jetzt beim Schreiben des Codes hier im Forum leider nicht aufgepasst als ich %%a, %%b reinschrieb, Sorry !

Ich soll das Problem mit dem Überschreiben der Werte lösen, ohne die Verwendung einer Textdatei als Zwischenspeicher für die Werte, daher der Versuch mit den verschachtelten Forschleifen.

Hatte die Schleifen zuerst einzeln, leider mit dem gleichen Ergebnis, dass immer eine von beiden (nämlich die, die nicht am wget hing), die Werte überschrieb.

Gruß

Backspace
Bitte warten ..
Mitglied: 60730
20.12.2010 um 17:54 Uhr
Zitat von Backspace:
Hallo,

das mit dem Kurz und Knapp war eigentlich gut gemeint, damit nicht allzuviel zum lesen da steht.
Wir suchen uns schon das raus, was wir brauchen und den Rest können wir ignorieren - ist in meinen Augen sinniger, als sich nen Kopf drüber zu machen, was und wieso ...

Es geht hier um eine Projektarbeit, die freien Speicher ausliest (heterogene Systeme), bei zuwenig Speicher eine Warnung per Mail versendet etc..

  • puh, also für sowas gibts doch Tools en Masse - sogar freie und nix gegen Mark und Bryce Werkzeuge, aber zum freien Platz auslesen - nehm ich doch kein Psinfo - sondern ein Dir...for /f "tokens=3 delims=, " %a in ('dir, c:\') do set free=%a

Der Code, den ich oben geschrieben habe, ist mehr allgemein gehalten, insbesondere was die Vergabe der Variablen angeht, im
Originalcode bei mir habe ich nicht %%a, %%b gewählt, sondern sehr weit auseinanderliegende Buchstaben, hab jetzt beim
Schreiben des Codes hier im Forum leider nicht aufgepasst als ich %%a, %%b reinschrieb, Sorry !

  • grrr - also wenn ich - falls ich tatsächlich mal ne Frage hätte - ich würde die betreffenden Zeilen fürs Forum ganz sicher nicht neu erfinden - sondern den Zustand weitergeben, an dem ich hängengeblieben bin.

Ich soll das Problem mit dem Überschreiben der Werte lösen, ohne die Verwendung einer Textdatei als Zwischenspeicher
für die Werte, daher der Versuch mit den verschachtelten Forschleifen.
Ok nochmal langsam .... du hast da einen dreizeiligen Schnippsel, den so keiner nachvollziehen kann - wer 1,5 und wer 7 ist etc.

Hatte die Schleifen zuerst einzeln, leider mit dem gleichen Ergebnis, dass immer eine von beiden (nämlich die, die nicht am
wget hing), die Werte überschrieb.
Du hast dir aber schon die Mühe gemacht, mal nach einer Anleitung zu suchen, die sich um das Thema For Schleifen in Bädsches kümmert?

Gruß
Bitte warten ..
Mitglied: Backspace
20.12.2010 um 20:39 Uhr
Ja, ich hab mir die Mühe gemacht.


Nichts für Ungut.
Bitte warten ..
Mitglied: Biber
20.12.2010 um 21:08 Uhr
Moin Backstube,

zu den Fähigkeiten, die wir uns im IT-Zeitalter notgedrungen aneignen müssen, wenn wir nicht wie ein Sarrazin enden wollen gehört auf jeden Fall das Filtern und Bewerten von Daten und im zweiten Step das Destillieren von Informationen aus Daten.
Und nach jahrelanger Übung vielleicht und hoffentlich sogar das Destillieren von Wissen aus Informationen.

Bitte versuch auch du, die Kommentare von T-Mo auf verwertbare und vielleicht auch wertvolle Informationen zu scannen und nicht nur auf die T-Mo-typischen freundschaftlich-ruppigen Rüffel anzuspringen.

Wo T-Mo sicherlich recht hat - die Darreichungsform deiner Frage ist ... na ja-wirf selber noch mal einen unvoreingenommen Blick darauf bitte.

Die darauf bezogenen Anmerkungen sind angebracht, aber insgesamt nicht zielführend.

Vielleicht solltest du eher noch mal seine Anregung prüfen, ob nicht für deinen Zweck ein real existierendes Umsonst-und-draußen-One-Trick-Tool sinnvoller wäre.
Immerhin versuchst du schon seit zwei Wochen - wie es vor dir bestenfalls McGuywer geschafft hat - aus Kronenkorken und zwei alten Miesmuscheln irgendetwas von Win95 bis Win8 Beta universal Einsetzbares zu basteln...

Wenn das 14 Tage braucht, dann deutet es doch darauf hin, dass
  • du entweder absolut keinen Draht zum Skripten hast, dafür aber vielleicht supergut Xylophon spielst oder Cartoons zeichnen kannst
  • oder aber, dass dir die Grundlagen zum Handhaben der Werkzeuge fehlen oder das Ziel zu hoch gesteckt (worden) ist
  • oder aber, und vor allem das solltest du prüfen, ob es vielleicht das falsche Werkzeug ist.

Das zeugt doch nicht von Eleganz und handwerklicher Begabung, wenn du deinem Ausbilder beweist, dass du irgendwelche Dübel auch mit dem Vorschlaghammer in die Wand bekommst oder Nägel mit der Schlagbohrmaschine.

Wenn die Anforderungen und Voraussetzungen so weit auseinanderlaufen wie in deinen letzten Posts geschildert,
dann ist es eben nicht das richtige Werkzeug (i.e. PsTools & FOR/F-Anweisungen) für deinen Zweck.

Deshalb beiss dich da nicht trotzig fest an diesem (sehr guten) FOR-Tutorial - sortier doch erstmal, was das Ziel (und was davon Pflicht und was Kür) ist.
Und prüfe dann, welches Tool dich dem Ziel näher bringt.

Grüße
Biber
Bitte warten ..
Mitglied: jeb-the-batcher
21.12.2010 um 08:54 Uhr
Zitat von 60730:
  • wenn du eine Schleife mit "tokens=1,5" baust - und als Laufvariable %a nimmst - was genau passiert denn da?
- genau der erste Wert ist %a und der zweite, der an 5. Stelle liegt %b

  • Von daher kannst du keine doppelte Schleife dranhängen und da auch %b benutzen.

Ja gut erkannt, aber trotzdem falsch.

Gut zu sehen an einem einfachen Beispiel
01.
@echo ON 
02.
for /F "tokens=1,2" %%a IN ("111 222") DO ( 
03.
   FOR %%b IN ("333") DO ( 
04.
      echo %%~a %%~b 
05.
06.
)
Obwohl jetzt durch durch die äußere FOR-Loop tatsächlich in der inneren LOOP echo %%a %%b durch echo 111 222 ersetzt werden,
schafft es cmd.exe danach sich nochmal um zu entscheiden und dann doch lieber echo 111 333 am Ende zu verwenden.

Zu beachten ist auch, das cmd.exe das %%b in FOR %%b ... nicht ersetzt, als wenn klar wäre, dass das nicht so sinnvoll ist.
Sprich in der Inneren Loop kann man nicht an das %%b der äußeren Loop heran kommen.
Die Abarbeitung von FOR-LOOPs scheint sich intern bereits beim ersten Parsen, die Stellen zu merken an denen später ersetzt wird.

Grüße
jeb
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA Letzte Zelle Suchen dann rechnen und Wert in Zelle Übertragen (3)

Frage von Addi089 zum Thema Microsoft Office ...

Batch & Shell
gelöst Batch: Variable einen Wert zuweisen (7)

Frage von sascha382 zum Thema Batch & Shell ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (2)

Frage von Matzus87 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...