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 String mit Batch mehrfach anhand von Teilern zerlegen

Mitglied: RGraepel

RGraepel (Level 1) - Jetzt verbinden

20.12.2008, aktualisiert 02:37 Uhr, 22914 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe einen String (den könnte ich z.B. aus einer Datei auslesen). Dieser String ist immer nach dem Muster
xxxxx/xxxxxxx/xxxxxxxx/xxxxxxxx/xxxxx
aufgebaut. Als Trennzeichen sind somit die / vorhanden.
Ich möchte jetzt die Werte des ersten, zweiten und sechsten Blocks haben und an ein php-Skript übergeben.

Geht das mit FOR /f ?
Muss ich dazu nach jedem Durchgang die Daten in eine andere Datei schreiben? Oder kann ich die Daten in verschiedenen Variablen speichern und dann den php-Aufruf von dieser Batch aus realisieren?
(Von php hab ich leider keine Ahnung. Sonst würde ich es vermutlich damit machen )


Ich freue mich auf Eure Unterstützung...

Bis hoffentlich bald
Rico
Mitglied: Biber
20.12.2008 um 01:29 Uhr
Moin Rico,

willkommen im Forum.
Die entsprechende Syntax der FOR/F-Anweisung wäre in etwa so:
01.
For /f "delims=/ tokens=1,2,6" %i in ("aaa/bb/cc/dddd/ee/ff/gg") do @echo [Ausgabe] %i %j %k 
02.
[Ausgabe] aaa bb ff
...wobei dort, wo ich jetzt den hart verdrahteten Text "aa/bb..." eingegeben habe natürlich der Name der Textdatei stehen sollte. Ist also nur zum Spielen am CMD-Prompt.
In Deiner Batch-Verarbeitung könnte das dann so aussehen:

01.
@echo off & setLocal 
02.
For /f "delims=/ tokens=1,2,6" %%i in ("D:\Eine\Textdatei.txt") do ( 
03.
      Set "myvar1=%%i"  
04.
      Set "myvar2=%%j" 
05.
      Set "myvar3=%%k" 
06.
07.
Echo var1 hat Wert [%var1%] 
08.
Echo var2 hat Wert [%var2%] 
09.
Echo var3 hat Wert [%var3%]

Grüße
Biber
Bitte warten ..
Mitglied: Biber
05.01.2009 um 10:20 Uhr
Moin und eine Nachfrage, RGraepel,

Bis hoffentlich bald

Wie definiert Ihr dort wo Dein Rechner steht "bald"??
Ich freue mich auf Eure Unterstützung...
Wie lange noch dürfen wir uns auf ein Feedback von Dir freuen?

Grüße
Biber
Bitte warten ..
Mitglied: RGraepel
06.01.2009 um 15:24 Uhr
Hallo Biber,

was lange währt wird endlich gut.
Nein, im Ernst: Ich habe einen Beruf, in dem ich häufiger über längere Zeit leider nicht im Lande bin. Daher komme ich nicht immer dazu so schnell zu antworten, wie ich es mir selber gerne wünschen würde. Bitte entschuldige die Verzögerung.

Dein Beitrag hat mir super geholfen. Ich habe es mit Hilfe Deiner Angaben hinbekommen. Die Batch läuft wunderbar.

Vielen Dank nochmal

Bis BALD
Rico
Bitte warten ..
Mitglied: Fahrrad
10.08.2010 um 10:57 Uhr
Moin,

ich suche etwas ähnliches, nur das ich einen Verzechnispfad zerlegen will, als DELIMS=\ kommt natürlich nur Sch... heraus

Habt ihr eine Idee?

Danke & Gruß
Fahrrad
Bitte warten ..
Mitglied: Biber
10.08.2010 um 11:46 Uhr
Moin Fahrrad,

Zitat von Fahrrad:
Moin,

ich suche etwas ähnliches, nur das ich einen Verzechnispfad zerlegen will, als DELIMS=\ kommt natürlich nur Sch...
heraus

Habt ihr eine Idee?
Jepp, immer.

Das Eröffnen eines neuen Beitrags mit einer etwas konkreteren Beschreibung des Problems wären ein Anfang.
Und nichts gegen angedeutete Kraftworte, wenn sie das Ergebnis plastischer vorstellbar machen.

Aber in deinem Kommentar hat es absolut nichts gebracht.

Grüße
Biber
Bitte warten ..
Mitglied: Fahrrad
10.08.2010 um 13:35 Uhr
Du hast Recht.....

Ich möchte eine willkürliche Pfadnagabe mit willkürlicher Länge in ihre Einzelverzeichnisse zerlegen und als Variablen speichern

zB

C:\Verz1Verz2\Verz3\Verz4

in %Dir1%=Verz1
%Dir2%=Verz2 usw.

Danke
Bitte warten ..
Mitglied: Biber
10.08.2010 um 15:42 Uhr
Na ja... "willkürlich" will ich ja auch oft... aber lass uns mal von Gebrauchsbätchen ausgehen.

Also lassen wir mal kurz die Fälle beiseite in denen die Verzeichnistiefe größer ist als 4 Mio Ebenen.

Dann kannst du das alles auch zwar mit einem Batch machen, aber eigentlich würde ich die eine Zeile gleich vom CMD-Prompt aus abschicken.
Das lohnt ja da das Speichern nicht.

Ich weiss nicht, ob dir "EnableDelayedExpansion" was sagt.
Falls ja, ist sie sicherlich ohnehin standardmäßig aktiv.
Falls wider Erwarten nein, dann bitte folgende vorbereitenden Massnahmen zum Test am CMD-Prompt
{CMD-Fenster öffnen auf welche Art auch immer}
Dort eingeben [bei allem, was jetzt kommt: führendes ">" NICHT mit eingeben; is' sich mein Prompt):
01.
>Mode con cols=155 lines =44 & Cmd /V:on /K
Nach der Vorbereitung lautet eine mögliche proof-of-concept-Zeile.
>@setlocal enabledelayedexpansion & set "DFD=C:\verz1\Verz2\Verz 3a und 3b\Verz4" & @For %i in ("%DFD:\=" "%") do @(set /a "ffh+=1" & set "Dir!ffh!=%~i")
  • Erkennen kannst du
a) meine Schreibfaulheit
b) eine Variable DFD [=DasFahrradDir], die den Inhalt "C:\verz1\Verz2\Verz 3a und 3b\Verz4" zugewiesen bekommt
c) eine Variable ffh [=fahrradferzeichnishochzähler] für die späteren Dir1, Dir2, Dir3-Variablen

Überprüfung -< Ausgabe aller Variablen namens Dir[irgendwas}
>set dir 
Dir1=C: 
Dir2=verz1 
Dir3=Verz2 
Dir4=Verz 3a und 3b 
Dir5=Verz4
Wolltest du nicht einen eigenen Beitrag aufmachen?

Grüße
Biber
Bitte warten ..
Mitglied: Fahrrad
10.08.2010 um 15:53 Uhr
Hallo biber,

soweit vielen Dank, ich werde mal testen und berichten.

ich hatte die Suchfunktion bemüht und bin bei diesem Beitrag hängengeblieben, weil ich mir recht ähnlich schien (nur \ und / vertauscht), deshalb habe ich keine eigenen aufgemacht

gruß
Fahrrad
Bitte warten ..
Mitglied: Fahrrad
11.08.2010 um 10:40 Uhr
Hallo biber,

das klappt soweit sehr gut, (wie häufig ein kleines ) aber.....

ich möchte die Variablen gerne in meinem Skript erzeugen und weiterverwenden

Beingt durch den Aufruf CMD habe ich eine neue Instanz des Interpreters, wie bekomme ich das in einem Skript unter? Stehe ich auf dem Schlauch?

Danke & Gruß
Fahrrad
Bitte warten ..
Mitglied: Biber
11.08.2010 um 20:29 Uhr
Moin Fahrrad,

die Zeile oben sollte ja nur eine Strategieskizze sein.

für die Nutzung in einem Batch gibt es ja wieder das Szenario
a) du brauchst es innerhalb eines (konkreten, real existierenden) bestehenden Batches
b) du brauchst diese Funktionalität öfters mal, standalone, weil du das von verschiedenen Stellen aus (Batches oder auch mal von CMD-Prompt) aufrufen willst.

Macht insofern einen Unerschied, weil im ersten Fall die Variablen %dir1%, %dir2%.....%dirN% eben auch wenig Seiteneffekte verursuchen können,
im zweiten Fall müssten die Variablen eben sessionweit, nicht nur local gesetzt werden (und eben auch entsorgt).

Da ich doch dein Szenario von hier aus nicht sehen kann, selbst wenn ich mich ganz weit vorbeuge und auf Zehenspitzen stelle... was soll ich rumratenß

Innerhalb eines bestehenden Batches kannst du es sinngemäß so machen.
01.
@echo off & setlocal 
02.
:: Dein Batch 
03.
:: :....Dein-Batchkommentar 
04.
:.... deine Batch-SET anweisungen 
05.
:: deine Aufrufparemterauswertungen 
06.
:. ... 
07.
Set "DasDirWasIchAufdroselnWill=C:\verz1\Verz2\Verz 3a und 3b\Verz4" 
08.
::... 
09.
:: Variablen Dir1...dir50 löschen 8falls vorhanden) 
10.
For /L %%i in (1,1,50) do set "dir%%i=" 
11.
 
12.
call :PfadInVarPacker "%DasDirWasIchAufdroselnWill%" 
13.
.... 
14.
:: hier sollten die Variable Dir1, dir2 etc gesetzt sein 
15.
setlocal enabledelayedexpansion 
16.
For /L %%i in (1,1,50) do if defined !dir%%i! do echo dir%%i ist !dir!%%i 
17.
setlocal enabledelayedexpansion 
18.
:goto :eof 
19.
~~~~~~~~~~~~~Ende von Dein Batch ~~~~~~~~ 
20.
::PfadInVarPacker paramter %1 ist lw/pfad-Zeichenfolge in Anführungszeichen 
21.
setlocal enabledelayedexpansion 
22.
 
23.
set "DFD=%~1"  
24.
For %%i in ("%DFD:\=" "%") do  
25.
       set /a "ffh+=1"  
26.
     set "Dir!ffh!=%%~i" 
27.
28.
setlocal disabledelayedexpansion 
29.
 
30.
goto :eof
absolut ungetestet

Poste doch mal deinen Batch/dei Szenario.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
PHP
String zerlegen an verschieden Stellen
Frage von ppmk22PHP3 Kommentare

ich noch mal Ich habe verschieden Strings die immer 200 Zeichen lang sind. Diesen möchte ich an bestimmten stellen ...

Batch & Shell
String zerlegen an letzem Backslash
gelöst Frage von fuguBatch & Shell4 Kommentare

Heyho ihr Supercoder ;-) Ich möchte für ein Backup-Skript eine Textdatei mit den Backup-Quellen. Die Daten einzulesen ist leicht. ...

Batch & Shell
Teil eines Strings löschen
gelöst Frage von Dnis822Batch & Shell18 Kommentare

Hallo zusammen, ich komme gerade bei folgendem Punkt nicht weiter: Ich habe eine Datei die völlig unformatiert ist, das ...

Batch & Shell
Teil eines Strings als Variable setzen
gelöst Frage von tHe-jAyBatch & Shell2 Kommentare

Hallo, für ein kleines Batch-Script benötige ich einen Servicenamen als Variable. Den Servicenamen frage ich über folgenden Befehl ab: ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 StundeWindows 10

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 4 StundenAdministrator.de Feedback8 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 21 StundenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...