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

Zeichenkette aus txt-Datei auslesen, teilen, und mit Trennzeichen versehen

Frage Entwicklung Batch & Shell

Mitglied: kkboy94

kkboy94 (Level 1) - Jetzt verbinden

11.06.2010 um 22:30 Uhr, 6064 Aufrufe, 8 Kommentare

Hey Leute

Ich weiß, das ist mein erster Beitrag
aber ich dachte es wär die beste idee, direkt hier zu Fragen, denn hier wurde mir schon oft geholfen.

Mein Problem sieht folgendermaßen aus:

Ich habe mir eine batch Datei geschrieben, die einen Wert aus der Registry ausliest und in einer Textdatei speichert.

Nun ist dieser Wert zusammenhängend und hat insgesamt 20 Zeichen die in jeweils 4er-Häppchen zerlegt werden sollen. Die Häppchen sollen dann durch Bindestriche getrennt werden.

Als Beispiel mal einen Wert, wie er aussehen könnte:
44T2SL8S8DDTYQ8E155F
am Ende soll dann sowas da stehen
44T2-SL8S-8DDT-YQ8E-155F

Ich hoffe, dass ihr mir helfen könnt.

Danke schonmal im Voraus


MfG Karsten
Mitglied: bastla
12.06.2010 um 00:15 Uhr
Hallo kkboy94!

Eigentlich sollte es nicht nötig sein, eine Textdatei zu erstellen - poste doch bitte (unter "<code>"- "</code>"-Tags) Deinen bisherigen Batch ...
Um aber konkret auf Deine Frage zu antworten: Unter der Annahme, dass der angesprochene String in der ersten Zeile der Datei steht, könntest Du die gewünschte Formatierung so erhalten:
01.
@echo off & setlocal 
02.
set /p Wert=<"D:\Die Textdatei.txt" 
03.
set "Wert_formatiert=%Wert:~,4%-%Wert:~4,4%-%Wert:~8,4%-%Wert:~12,4%-%Wert:~16%" 
04.
echo %Wert_formatiert%
Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
12.06.2010 um 11:53 Uhr
Erst einmal Danke für die schnelle Hilfe.
Ich werds mal ausprobieren.

Da die komplette Batch relativ lang ist, stelle ich hier nur mal den betreffenden Teil rein.
01.
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4" /V codkey >NUL 2>&1 
02.
IF %ERRORLEVEL% == 1 ( 
03.
   GOTO enderror 
04.
) ELSE ( 
05.
   FOR /F "Skip=2 tokens=2*" %%i IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4" /V "codkey"') do set "codkey=%%j" 
06.
07.
echo Ihr aktueller Key ist %codkey% 
08.
echo Er befindet sich im Backup-Ordner 
09.
echo %codkey% > "%CD%\codkey.txt" 
10.
move "%CD%\codkey.txt" "%CD%\Backup\"
Hoffe ihr könnt damit was anfangen.

PS:ch hab mir heut morgen dann auch nochmal Gedanken gemacht. Es stimmt ja schon, dass es unsinnig wäre eine Textdatei zu erstellen, aus zulesen, verändern und wieder ab zupspeichern.


MfG Karsten

EDIT:Wie würde das alles aussehen, wenn in der Textdatei noch mehrere Zeilen vor dem zu bearbeitenden String stehen?
Nachher soll der bearbeitete Wert wieder an die txt zurückgegeben werden
EDIT2:
01.
set /p Wert=<"D:\Die Textdatei.txt"  
02.
set "Wert_formatiert=%Wert:~,4%-%Wert:~4,4%-%Wert:~8,4%-%Wert:~12,4%-%Wert:~16%" 
Was bedeuten diese Zeilen? Manche Sachen sind mir noch unklar (Der Operator bei "set /p", und die vielen %, ~ und die Werte (4; 4,4; 8,4 usw...))

EDIT3:

01.
@echo off & setlocal 
Das "@echo off" hab ich bei meinen Batchs auch immer vorne dran stehen, aber was hat setlocal für eine Bedutung?
Bitte warten ..
Mitglied: bastla
12.06.2010 um 16:18 Uhr
Hallo kkboy94!

Könntest Du, sobald das gesamte Konzept fertig ist, Dein Vorhaben vollständig darstellen (jetzt sieht es ja eher nach "Suchen / Ersetzen" aus, wobei ich nicht wüsste, nach welchem Begriff zu suchen wäre)?

In der Zwischenzeit sollte die Onlinehilfe
setlocal /? 
set /?
Dir vielleich schon erste Anhaltspunkte zu Deinen Fragen liefern.

Was das "set /p" anlangt: Damit wird eine Eingabe, die mit Enter abgeschlossen wird, entgegengenommen und in der angegebenen Variable gespeichert - in diesem Fall kommt die "Eingabe" eben aus einer Datei (konkret: aus dem Beginn der Datei bis zum ersten Enter = aus der ersten Zeile der Datei) ...

Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
12.06.2010 um 16:31 Uhr
Also...
Der Sinn meines Vorhaben ist folgender:
Es soll eib Registrierungsschlüssel aus der Registry ausgelsen werden, in Stücke geteilt und in eine Textdatei abgelegt werden, damit man bei Neuinstallation den gleichen Schlüssel wieder benutzen kann.
Die Textdatei sollte dann so in etwa aussehen:
01.
Der gesicherte Schlüssel ist: 
02.
44T2-SL8S-8DDT-YQ8E-155F
Bitte warten ..
Mitglied: bastla
12.06.2010 um 17:13 Uhr
Hallo kkboy94!
01.
set "codkey=" 
02.
FOR /F "Skip=2 tokens=2*" %%i IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Activision\Call of Duty 4" /V "codkey"') do set "codkey=%%j" 
03.
if not defined codkey goto :enderror 
04.
set "key=%codkey:~,4%-%codkey:~4,4%-%codkey:~8,4%-%codkey:~12,4%-%codkey:~16%" 
05.
echo Ihr aktueller Key ist %key% 
06.
echo Er befindet sich im Backup-Ordner 
07.
> "Backup\codkey.txt" echo Der gesicherte Schlüssel ist: 
08.
>>"Backup\codkey.txt" echo %key%
Grüße
bastla

P.S.: Die Verwendung von %cd% am Beginn einer Pfadangabe ist witzlos, da der aktuelle Pfad ja ohnehin schon %cd% ist ...
Bitte warten ..
Mitglied: kkboy94
12.06.2010 um 21:49 Uhr
Hat super funktioniert. Danke für die Hilfe. Funktioniert 1a
01.
set "key=%codkey:~,4%-%codkey:~4,4%-%codkey:~8,4%-%codkey:~12,4%-%codkey:~16%" 
Den Teil habe ich immer noch nicht verstanden.
So wie ich mir das nun denke ist dieser Teil ":~,4" für den ersten 4er-Block zuständig.
Demnach müsste ":~4,4" doch für den 2. 4er-Block da sein. Aber der zweite 4er Block hat doch das 8. Zeichen als letztes. Also warum ist der Teil dann nicht ":~8"
Das müsste mir noch erklärt werden.
Ausprobiert hab ichs schon --> es ist so wies sein sollte, aber ich verstehs halt nich.


MfG Karsten
Bitte warten ..
Mitglied: bastla
13.06.2010 um 00:17 Uhr
Hallo kkboy94!

Die beiden Werte bedeuten
  • Offset (wieviele Zeichen vom Anfang weg sollen übersprungen werden (beim ersten Teilstring steht nix vor dem Komma, was mit 0 oder mit "Fang ganz vorne an!" gleichzusetzen ist)
  • Zeichenanzahl (daher immer 4)

Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
13.06.2010 um 11:03 Uhr
Ahh ok gut, danke für die Hilfe bastla.


MfG Karsten
Bitte warten ..
Neuester Wissensbeitrag
Windows Update

Windows Update-Suche nach Win7 Neuinstallation wieder schneller

(2)

Erfahrungsbericht von the-buccaneer zum Thema Windows Update ...

Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
Bestehende eMails autoamatisch weiterleiten (21)

Frage von metal-shot zum Thema Exchange Server ...

Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (21)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (18)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (16)

Frage von ProfessorZ zum Thema Router & Routing ...