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 2 Variablen in einer Zeile verarbeiten

Mitglied: pbelcl

pbelcl (Level 1) - Jetzt verbinden

23.02.2007, aktualisiert 25.02.2007, 5240 Aufrufe, 8 Kommentare

Auslesen einer Date via Batch und deren Inhalt in mehrere Variablen übernehmen

Hi Leute,
Ich habe diesen Beitrag zwar schon mal hier gepostet, aber leider ist der irgendwie verschwunden

Ich habe mit Eurer Hilfe eine Batchdatei erzeugt die aus einer Liste Infos einliest und daraus ein spezielles Config FIle erstellt.
Das funktioniert auch hervorragend.

Das Batch: (nur das Kernstück kopiert!!)
For /F "eol=; tokens=255*" %%i in (S_%device%.txt) do (
if Exist %lw%\%%i echo CAB;%stor%%%i;False; >> %filename% | goto end

macht aus dem hier:
Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab
Pocket PC.cabs\Customize CABs\Tastenbelegung\Tasten_HTC_P3600.cab

das:
CAB;Speicherkarte\Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab
CAB;Speicherkarte\Pocket PC.cabs\Customize CABs\Tastenbelegung\Tasten_HTC_P3600.cab

Nun hat sich die Herausforderung gestellt daß meine SOURCE Liste einen Parameter dazu bekommt:
Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab,True
Pocket PC.cabs\Customize CABs\Tastenbelegung\Tasten_HTC_P3600.cab,False

Der Parameter "TRUE" oder "FALSE" soll am Ende der SOURCE Liste angehängt werden wobei ich mir aussuchen kann ob mit "," oder ";" oder einem anderen Zeichen!

Das Ergebnist muss dann so aussehen:
CAB;Speicherkarte\Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab;True;
CAB;Speicherkarte\Pocket PC.cabs\Customize CABs\Tastenbelegung\Tasten_HTC_P3600.cab;False;

Ich hab mit allen möglichen (eher geratenen) Varianten in meiner Batch Datei rumgespielt aber keine Lösung gefunden. Hab auch ehrlich gesagt diese FOR Funktion noch nicht 100% verstanden

Hat jemand einen Tip oder vielleicht sogar ein paar COdezeilen für mich ???
Mitglied: bastla
23.02.2007 um 18:07 Uhr
Hallo pbelcl!

Falls Du nicht vor hast, aus einem "," in der "S_%device%.txt" ein ";" in der Ausgabe zu machen, könntest Du einfach bereits in der "S_%device%.txt" als Trennzeichen ";" verwenden und es so versuchen:
01.
for /f "delims=" %%i in (S_%device%.txt) do if exist %lw%\%%i echo CAB;%stor%%%i; >>%filename%
Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
25.02.2007 um 09:41 Uhr
Hallo bastla,

Danke für den Tip!
Ich muß allerdings die beiden Teile irgendwie trennen da ich mit der %%i Variable den korrekten Pfad der Datei abprüfe (siehe "if exist") und da paßt das "true" oder "false" am ende natürlich nicht rein!
Außerdem mache ich mit der selben Basisliste auch einen Copyjob für welchen ich auch "nur" den Pfad brauche.

Ich habe mal den kopmpletten Batch angehängt damit Du siehst was ich meine:

SET device=Trinity
SET LW=p:\CD's
SET STOR=Speicherkarte
SET Filename=S_%DEVICE%.dat
del %filename%

For /F "eol=; tokens=255*" %%i in (S_%device%.txt) do (
if Exist %lw%\%%i echo CAB;%stor%%%i;False; >> %filename% | goto end
if NOT EXIST %LW%\%%i echo ---! FEHLT !---%%i >> %filename%
)

:end

Die Frage ist: Kann man die Zeile

Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab,True

in der device.txt so auf 2 Variablen verteilen daß in der ersten:

Pocket PC.cabs\Customize CABs\PB_WM5_Customize.cab

steht und in der zweiten:

"true" oder ",true"
Bitte warten ..
Mitglied: bastla
25.02.2007 um 11:30 Uhr
Hallo pbelcl!

Sorry, hatte nicht genau genug hingesehen ...

Sollte eigentlich so gehen:
01.
SET device=Trinity 
02.
SET LW=p:\CD's 
03.
SET STOR=Speicherkarte 
04.
SET Filename=S_%DEVICE%.dat 
05.
del %filename% 
06.
 
07.
For /F "eol=; delims=, tokens=255*" %%i in (S_%device%.txt) do ( 
08.
if Exist %lw%\%%i echo CAB;%stor%%%i;%%j; >> %filename% | goto end 
09.
if NOT EXIST %LW%\%%i echo ---! FEHLT !---%%i >> %filename% 
10.
11.
 
12.
:end
Wozu brauchst Du eigentlich "eol=;" - üblicherweise dient das dazu, Kommentarzeilen, die mit ";" beginnen, nicht zu verarbeiten (indem alles nach dem ";" ignoriert wird)?

Was mich auch überrascht ist das "| goto end" - was bezweckst Du damit?

Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
25.02.2007 um 11:49 Uhr
hallo bastla,

Das EOL brauche ich genau dafür!
In der Textliste werden manchmal Zeilen von mir mit ";" auskommentiert die dann NICHT verarbeitet werden sollen!

Und das Goto end habe ich mir wenn ich ehrlich bin aus einem Batch in eurem Forum abgeschaut. Es soll bewirken daß wenn der "if exist" ausgeführt ist nicht auch noch die "if not exist" Zeile ausgeführt werden muß. Ich weiß daß es nicht nötig ist, hat für mich einfach nur "sicherer" ausgesehen...

Ich hab Deine letzte Variante gerade probiert. Leider befindet sich in %%i immer noch die GANZE Zeile des Textfiles (mit ",true" am Ende). Daher springt die Routine auch in "if not exist".
Ich habe in der Textliste die Zeilen so drinnen:

2a Pocket PC.cabs\2 - Customize CABs\1 - System\Security Check.WM5\Sec_aus.CAB,true
2a Pocket PC.cabs\2 - Customize CABs\1 - System\Ident Eintrag\HTC_Trinity_Ident.cab,false


Das sollte ja passen denn in Deinem Vorschlag ist das "," der Delimiter, oder?

Gehört da vielleicht beim Token irgendwas verändert? Ich kenn mich mit den Token nicht so gut aus daher weiß ich nicht was das "token=255*" bewirkt. Vielleicht soll da sowas wie "token y,x" rein?
Bitte warten ..
Mitglied: bastla
25.02.2007 um 11:59 Uhr
Hallo pbelcl!

Vielleicht soll da sowas wie "token y,x" rein?
Ja, passe die Schreibweise so an:
01.
For /F "eol=; delims=, tokens=1,2" %%i in (S_%device%.txt) do (
Hinsichtlich des "| goto end": Ist eigentlich überflüssig, aber damit es in Deinem Sinn verwendet würde, müsstest Du "& goto :end" schreiben.

Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
25.02.2007 um 16:52 Uhr
Hallo bastla,

mit der neuen token=1,2 klappts jetzt hervorragend, Danke!!

Versteh ich das richtig daß man damit die Anzahl der zu verwendeten Variablen angibt?
könnte ich mit:
For /F "eol=; delims=, tokens=1,2,3" %%i in (S_%device%.txt) do (

zum Beispiel eine Zeile:
2a Pocket PC.cabs\2 - Customize CABs\1 - System\Ident Eintrag\HTC_Trinity_Ident.cab,false,MDAPro
so aufteilen daß:
%%i = 2a Pocket PC.cabs\2 - Customize CABs\1 - System\Ident Eintrag\HTC_Trinity_Ident.cab
%%j = false
%%k = MDAPro
erzeugt wird ?

Das "| goto end" hab ich rausgeworfen, hat sich wie erwartet nichts geändert, danke auch für diesen Tip!

Müßte ich nicht statt "& goto :end" eher "& goto end" schreiben?
Wie viele "&" kann ich in einer For Schleife hintereinander machen, nur 1 x oder öfter?
Bitte warten ..
Mitglied: bastla
25.02.2007 um 17:16 Uhr
Hallo pbelcl!

Versteh ich das richtig daß man damit die Anzahl der zu verwendeten Variablen angibt? könnte ich mit:
For /F "eol=; delims=, tokens=1,2,3" %%i in (S_%device%.txt) do (
zum Beispiel eine Zeile:
2a Pocket PC.cabs\2 - Customize CABs\1 - System\IdentEintrag\HTC_Trinity_Ident.cab,false,MDAPro
so aufteilen daß:
%%i = 2a Pocket PC.cabs\2 - Customize CABs\1 - System\Ident Eintrag\HTC_Trinity_Ident.cab
%%j = false
%%k = MDAPro
erzeugt wird ?
Ja; alternativ ginge auch "tokens=1-3". Ein "tokens=3" zB würde nur %%i mit dem Wert "MDAPro" liefern.

Müßte ich nicht statt "& goto :end" eher "& goto end" schreiben?
Bei "goto" ist der Doppelpunkt nicht erforderlich (aber zulässig), nach einem "call" hingegen wird er benötigt - daher habe ich mir angewöhnt, immer ":Sprungmarke" zu schreiben.

Wie viele "&" kann ich in einer For Schleife hintereinander machen, nur 1 x oder öfter?
Mir sind keine diesbezüglichen Beschränkungen bekannt ...

Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
25.02.2007 um 17:25 Uhr
Ja; alternativ ginge auch
"tokens=1-3". Ein
"tokens=3" zB würde nur %%i
mit dem Wert "MDAPro" liefern.
Super nun verstehe ich auch diese Funktion

Bei "goto" ist der Doppelpunkt nicht erforderlich (aber zulässig), nach
einem "call" hingegen wird er benötigt -...
Na schau an das hab ich nicht gewußt. Wieder was gelernt!
Danke nochmal für deine bereitwillige Hilfe!
lg
Pauli
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten

gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Batch & Shell

Batch Zeile für Zeile auslesen und jede Zeile eine bestimmte Variable zuweisen

gelöst Frage von CerauxBatch & Shell4 Kommentare

Hallo, ich habe schon überall gesucht und noch nichts gefunden wie man Zeilen bestimme Variablen zuweist. Zum Beispiel: file.txt: ...

Batch & Shell

Jede Zeile einer Textdatei in eigene Variable speichern

Frage von tomaschkuBatch & Shell4 Kommentare

Hallo erstmal, Da ich keine passende Antwort auf meine Frage gefunden habe, will ich es hier versuchen. Als Beispiel: ...

PHP

TXT Datei auslesen und bestimmte Zeilen in Variable setzen

gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 21 StundenMicrosoft

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 22 StundenSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 1 TagSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 1 TagHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen24 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple22 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1022 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Datenbanken
MS SQL DB-Daten archivieren?
gelöst Frage von SchelinhoDatenbanken16 Kommentare

Hallo zusammen! Ich habe eine Anwendung, welche MSSQL (SQL Server 2014 SP2) nutzt. Auf der DB-Instanz laufen diverse Datenbanken. ...