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, 4510 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(2)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Teilstring nach Splitten in Variablen schreiben vbs (2)

Frage von goodbytes zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
Powershell - In Textdatei suchen und ersetzen (1)

Frage von Raaja89 zum Thema Batch & Shell ...

Batch & Shell
gelöst Loginzeiten aus dem Ereignisprotokoll in Excel schreiben (1)

Frage von l-Ne0n zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...