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

Variable zwischenspeichern?

Frage Entwicklung Batch & Shell

Mitglied: ruebensau

ruebensau (Level 1) - Jetzt verbinden

05.08.2008, aktualisiert 20.08.2008, 4058 Aufrufe, 3 Kommentare

Hallo Jungs,

sehe gerade bestimmt den Wald vor lauter Bäumen nicht.

habe diesen Input:

A600,test1,name1
$$$$,test2,name2
$$$$,test3,name3
$$$$,test4,name4
$$$$,test5,name5
$$$$,test6,name6
$$$$,test7,name7
A700,test8,name8
$$$$,test9,name9
$$$$,test10,name10
$$$$,test11,name11
A800,test12,name12
$$$$,test13,name13
....
output soll so aussehen:

A600,test1,name1
A600test2,name2
A600test3,name3
A600test4,name4
A600test5,name5
A600test6,name6
A600test7,name7
A700,test8,name8
A700test9,name9
A700test10,name10
A700test11,name11
A800,test12,name12
A800test13,name13

ich habs mit der for /f schleife probiert

for /f "tokens=1-3 delims=," %%a in (b.log) do (
if not "%%a"=="$$$$" set "k=%%a"
echo %k%,%%b,%%c >> d.log
)

erstes feld wird genommen und in variable gespeichert
solange erstes feld = $$$$ ersetze es durch den wert in der variable
wenn erstes feld nicht $$$$ dann ersetze die variable durch den neuen wert
usw.
bekomme es aber irgendwie nicht hin

danke schonmal

MfG
Rübe
Mitglied: Biber
05.08.2008 um 18:01 Uhr
Moin Rübe,

da das Setzen und das Abfragen der Variablen %k% innerhalb einer CMD-Anweisung passiert, musst Du mit "DelayedExpansion" (=Auflösen einer Variablen erst beim Anfassen) arbeiten.
01.
@echo off & setlocal EnableDelayedExpansion 
02.
for /f "tokens=1-3 delims=," %%a in (b.log) do ( 
03.
   if "%%a"=="$$$$" set "k=%%a"   
04.
  echo !k!,%%b,%%c >>d.log 
05.
)
[ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: ruebensau
20.08.2008 um 10:05 Uhr
endlich wieder im Büro und danke Biber. Funktioniert wie alles von dir!

Eine syntaktische Frage hätte ich noch:
Wieso muss k in Ausrufezeichen stehen !k! und kann nicht wie ich es sonst kenne in Prozentzeichen stehen %k%?
Liegt es an dem EnableDelayedExpansion?

Gruß
Rübe
Bitte warten ..
Mitglied: Biber
20.08.2008 um 19:51 Uhr
Moin Rübe,

die etwas andere Schreibweise hat in der Tat mit der verzögerten Variablenauflösung zu tun.
Du findest Beispiele natürlich hier im Forum, aber eine brauchbare Hilfe auch am Cmd-Prompt bei Eingabe von SET /? so im unteren Hilfetextdrittel.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst Bestimmtes Arrayfeld mit Variable aufrufen? - VBS (10)

Frage von gabrixl zum Thema VB for Applications ...

Batch & Shell
gelöst Laufwerksbezeichnung (label) in Batch als Variable nutzen (21)

Frage von tobias.mock zum Thema Batch & Shell ...

Microsoft Office
gelöst Micorsoft Excel: Variable Anzeige von mehreren Werten anhand von Stammdaten (1)

Frage von sammy65 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

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

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...