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

aus Textdatei Werte aus Anführungszeichen in Variablen schreiben

Frage Entwicklung Batch & Shell

Mitglied: Paddyville

Paddyville (Level 1) - Jetzt verbinden

13.02.2009, aktualisiert 22:28 Uhr, 4521 Aufrufe, 11 Kommentare

Hi an alle,

ich habe ein kleines Problem was ich mit der Suchfunktion zwar gefunden habe, allerdings nicht lösen konnte.
In einer Textdatei steht in dem Format "Wert1","Wert2","Wert3", .....,"Wert12".
Ich möchte am liebsten die einzelnen Werte in Variablen sehen.

Probiert habe ich diverse Lösungen mit Sonderzeichen löschen und dann einlesen, allerdings ohne erfolg.

Hat jemand eine Idee, wie ich das machen kann?

Viele Grüße aus Hamburg
Mitglied: bastla
13.02.2009 um 22:38 Uhr
Hallo Paddyville und willkommen im Forum!

Wenn es genau 12 Werte sind, dann etwa so:
01.
@echo off & setlocal 
02.
set "Datei=D:\Deine Datei.txt" 
03.
 
04.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine %%i 
05.
goto :eof 
06.
 
07.
:ProcessLine 
08.
for /L %%a in (1,1,9) do call set "W%%a=%%~%%a" 
09.
shift 
10.
set "W10=%~9" 
11.
shift 
12.
set "W11=%~9" 
13.
shift 
14.
set "W12=%~9" 
15.
echo %W1%_%W2%_..._%W12% 
16.
goto :eof
[Edit] Durch Verwendung der "for /L"-Schleife noch etwas kürzer gefasst ... [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Paddyville
13.02.2009 um 22:44 Uhr
Hallo bastla,

Vielen Danke für die schnelle Hilfe.
Ich bekomme eine Fehlermeldung nach den ausführen.

C:\pacs>?@
Der Befehl "?@" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Lösche ich @echo of und lasse nur setlocal stehen kommt:

C:\pacs>?s
Der Befehl "?s" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Sieht für mich echt komisch aus. Ist bei der Maschine ansich was faul bei mir?
Bitte warten ..
Mitglied: bastla
13.02.2009 um 22:50 Uhr
Hallo Paddyville!

Kann ich leider nicht nachvollziehen.

Lass Dir vielleicht einmal den "Quelltext" des Batches anzeigen und kopiere den Code von dort ....

Grüße
bastla
Bitte warten ..
Mitglied: Paddyville
13.02.2009 um 23:01 Uhr
Hallo bastla,

reboot und jetzt gehts wieder.
Ich kriege nur bei beiden Versionen keine Ausgabe.

Also das letzte was ich sehe ist
for /F ...
goto :eof

und das wars.
Bitte warten ..
Mitglied: bastla
13.02.2009 um 23:07 Uhr
Hallo Paddyville!

"for /f" solltest Du eigentlich gar nicht sehen ...

Wenn Du von der Kommandozeile testest (und das ist für einen Batch eigentlich immer zu empfehlen), kannst Du durch Ändern des "echo off" auf "echo on" jeden Befehl vor der Ausführung anzeigen lassen und so den Ablauf besser nachvollziehen.

Grüße
bastla
Bitte warten ..
Mitglied: Paddyville
13.02.2009 um 23:17 Uhr
Hallo bastla,

ich hab das Echo jetzt an gemacht.

Ausgabe sieht so aus:

C:\Temp>test1.bat

C:\Temp>set "Datei=test.dat"

C:\Temp>for /F "usebackq delims=" %i in ("test.dat") do call :ProcessLine %i

C:\Temp>goto :eof

C:\Temp>
Bitte warten ..
Mitglied: bastla
13.02.2009 um 23:30 Uhr
Hallo Paddyville!

Dieses Ergbenis solltest Du eigentlich nur erhalten, wenn die "test.dat" leer ist oder aber Unicode enthält - in letzterem Fall versuchsweise
type test.dat>test1.dat
und dann mit "test1.dat" testen.

Grüße
bastla
Bitte warten ..
Mitglied: Paddyville
13.02.2009 um 23:40 Uhr
Dankeschön bastla!
Es scheint dann unicode zu sein.
Jetzt wundert es mich auch nicht, dass die Lösungen die ich vorher von dir gefunden hatte nicht funktionierten.
Bitte warten ..
Mitglied: bastla
13.02.2009 um 23:47 Uhr
Hallo Paddyville!

Die Konvertierung per "type" lässt sich in den Batch integrieren:
01.
@echo off & setlocal 
02.
set "Datei=D:\test.dat" 
03.
 
04.
set DateiTemp=%temp%\Daten.dat 
05.
type "%Datei%">%DateiTemp% 
06.
 
07.
for /f "usebackq delims=" %%i in ("%DateiTemp%") do call :ProcessLine %%i 
08.
del %DateiTemp% 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
for /L %%a in (1,1,9) do call set "W%%a=%%~%%a" 
13.
shift 
14.
set "W10=%~9" 
15.
shift 
16.
set "W11=%~9" 
17.
shift 
18.
set "W12=%~9" 
19.
echo %W1%_%W2%_..._%W12% 
20.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Paddyville
14.02.2009 um 00:24 Uhr
Hallo bastla,

ich habe das script jetzt soweit fertig. Danke nochmal für den type Tipp.

Hast du zufällig noch eine Idee, wie man mit ä ö ü ß umgeht?

Damit könnte ich gleich ein zweites Problem erschlagen.

Danke und Gruß aus HH!
Bitte warten ..
Mitglied: bastla
14.02.2009 um 00:28 Uhr
Hallo Paddyville!

Schreib an den Anfang des Batches ein
chcp 1252 >nul
Damit änderst Du die Codepage auf "Windows"-Format (ANSI).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
gelöst Erstellen von Verknüpfungen mithilfe einer Variablen (3)

Frage von ciNNEx zum Thema Batch & Shell ...

Sonstige Systeme
UEFI Variablen beim Bootvorgang - Herunterfahren? (4)

Frage von Kedakai zum Thema Sonstige Systeme ...

Batch & Shell
Spoiler in textdatei automatisch über Powershellscript einfügen (5)

Frage von Dr.Byte zum Thema Batch & Shell ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Basic
Programmierung von Windows Programmen (9)

Frage von Ghost108 zum Thema Basic ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (9)

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

C und C++
Fehlendes verständiss von C und C++ (8)

Frage von zelamedia zum Thema C und C ...