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

Batch: mehrere Zeilen (Blöcke) in einer txt Datei zu einer Variablen hinzufügen

Frage Entwicklung Batch & Shell

Mitglied: pukass

pukass (Level 1) - Jetzt verbinden

17.12.2014, aktualisiert 18:32 Uhr, 1177 Aufrufe, 9 Kommentare

Guten Abend zusammen!

Bin neu hier und habe hier im Forum gesehen, dass sich einige gut in der batch auskennen.
Habe schon mehrere Tage im Internet bzw auch hier im Forum nach einer Lösung gesucht, aber noch nichts passendes gefunden.

Mein Problem:
Ich habe eine Text Datei die so aussieht:

slot: 0
name: hitachi
size: 300 GB
slot: 1
name: hitachi
size: 600 GB
slot: 2
name: hitachi
size: 900 GB
usw.

daraus möchte ich immer jeweils 3 zeilen zu einer Variablen hinzufügen:

var1:
slot: 0
name: hitachi
size: 300 GB

var2:
slot: 1
name: hitachi
size: 600 GB

var3:
slot: 2
name: hitachi
size: 900 GB

habe bisher immer nur Lösungen gefunden, die mir entweder 1 bestimmte Zeile in eine Variable schreiben oder gleich alles

Vielen Dank im voraus
lg Sebastian
Mitglied: Friemler
17.12.2014, aktualisiert um 19:18 Uhr
Hallo Sebastian,

in Batchscript ist es schwierig, einer Variablen zur Laufzeit Zeilenumbrüche hinzuzufügen. Es wäre interessant zu wissen, wie Du die Daten aus der Textdatei weiterverarbeiten möchtest und wie viele solcher Datensätze die Textdatei enthalten kann. Evtl. kann man sich dann eine andere Strategie zur Zwischenspeicherung der Daten überlegen.

Gruss
Friemler
Bitte warten ..
Mitglied: pukass
17.12.2014 um 19:30 Uhr
Hallo Friemler,

die Variablen müssen keine Zeilenumbrüche enthalten. Könnte also auch so aussehen:

var1=slot: 0 name: hitachi size: 300 GB

oder so ähnlich

Die Textdatei beinhaltet alle HDDs die an einem Raid Controller angeschlossen sind. Jede HDD wird mit 3 Zeilen beschrieben (oder auch vielleicht mehr Zeilen, dann aber immer gleich viele pro HDD). Ich möchte also mit den 3 Zeilen bzw. Werten, jede HDD einer Variable zuordnen.

Gruss
Sebastian
Bitte warten ..
Mitglied: Friemler
17.12.2014, aktualisiert 18.12.2014
Hallo Sebastian,

das könnte so gehen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set "InFile=In.txt" 
04.
set "DatasetSize=3" 
05.
 
06.
set /a Cnt=0 
07.
set /a Step=0 
08.
set /a Idx=0 
09.
 
10.
for /f "usebackq delims=" %%l in ("%InFile%") do ( 
11.
  set /a Step=Cnt %% DatasetSize 
12.
  if !Step! equ 0 set /a Idx+=1 
13.
  call :ExtendVar "Var!Idx!" "%%l" 
14.
  set /a Cnt+=1 
15.
16.
 
17.
set "VarName=" 
18.
set Var 
19.
 
20.
exit /b 
21.
 
22.
 
23.
 
24.
:ExtendVar 
25.
  set "VarName=%~1" 
26.
  set "AddValue=%~2" 
27.
  call set "CurValue=%%%VarName%%%" 
28.
   
29.
  if "%CurValue%" equ "" ( 
30.
    call set "%%VarName%%=%AddValue%" 
31.
  ) else ( 
32.
    call set "%%VarName%%=%%%VarName%%% %AddValue%" 
33.
34.
exit /b
In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.

Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen VarX, wobei X für die 1-basierte Nummer des Datensatzes steht. Der fixe Namensbestandteil kann in Zeile 13 geändert werden, indem bei "Var!Idx!" das Var durch etwas anderes ersetzt wird.

In Zeile 18 werden alle Variablen ausgegeben, deren Name mit Var anfängt. Damit kann der erfolgreiche Abschluss des Scripts überprüft werden. Wenn die o.g. Änderung in Zeile 13 durchgeführt wurde, muss Zeile 18 entsprechend angepasst werden.

Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable VarName (fängt auch mit Var an) ausgegeben wird, wird sie in Zeile 17 gelöscht.

Gruß
Friemler
Bitte warten ..
Mitglied: pukass
18.12.2014 um 08:00 Uhr
Hallo Friemler,

Hab die Batch gerade mal ausprobiert und sie läuft super. Vielen Dank dafür.

Eine Frage hätte ich noch: Was muss ich ändern falls ich anstatt der 3 Zeilen 4 oder mehr Zeilen hätte?

Gruß
Sebastian
Bitte warten ..
Mitglied: Friemler
18.12.2014 um 10:45 Uhr
Hallo Sebastian,

Zitat von Friemler:

..., in Zeile 4 die Länge (in Zeilen) eines Datensatzes.

Gruß
Friemler
Bitte warten ..
Mitglied: pukass
18.12.2014 um 13:16 Uhr
Hallo Friemler,

Danke. Habs verstanden.

Gruß
Sebastian
Bitte warten ..
Mitglied: pukass
19.12.2014 um 10:19 Uhr
Hallo Friemler,

eine Frage hätte ich doch noch. Hab das Skript in meins eingefügt und funktioniert auch alles. Wie kann man die Ausgabe aller Variablen deaktivieren. Es stört ein bisschen.

Gruß
Sebastian
Bitte warten ..
Mitglied: Friemler
19.12.2014, aktualisiert um 12:11 Uhr
Hallo Sebastian,

hier nochmal der Begleittext zum Script, dort steht alles wesentliche:

Zitat von Friemler:

In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.

Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen VarX, wobei X für die 1-basierte Nummer des
Datensatzes steht. Der fixe Namensbestandteil kann in Zeile 13 geändert werden, indem bei "Var!Idx!" das
Var durch etwas anderes ersetzt wird.

In Zeile 18 werden alle Variablen ausgegeben, deren Name mit Var anfängt. Damit kann der erfolgreiche Abschluss des
Scripts überprüft werden. Wenn die o.g. Änderung in Zeile 13 durchgeführt wurde, muss Zeile 18 entsprechend
angepasst werden.

Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable
VarName (fängt auch mit Var an) ausgegeben wird, wird sie in Zeile 17 gelöscht.

Gruß
Friemler
Bitte warten ..
Mitglied: pukass
19.12.2014 um 13:39 Uhr
Ah ok! Danke!

Gruß
Sebastian
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch - Bestimmter Inhalt einer Zeile aus einer txt oder ini als Variable
gelöst Frage von element22Batch & Shell2 Kommentare

Hallo zusammen, leider finde ich den Fehler nicht. Na gut, vielleicht sitzt er vorm Monitor, aber das ist etwas ...

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 ...

Batch & Shell
Batch: Zeilen in mehreren .txt zählen und Summe in Variable speichern
gelöst Frage von alfabravoBatch & Shell7 Kommentare

Hallo & guten Tag! Ich möchte gerne die Zeilen mehrerer Textdateien zählen und die Summe in einer Variablen speichern. ...

Batch & Shell
Mit Batch Zeilen aus TXT modifizieren
gelöst Frage von chef1568Batch & Shell4 Kommentare

Hallo zusammen, leider konnte ich mit den bisherigen Threads mein Problem bisher nicht lösen. Problemstellung: In einer Textdatei sind ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 17 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 22 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 22 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
gelöst Frage von prodriveNetzwerkmanagement12 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...