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, 6047 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


Mit freundlichen Grüßen 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.


Mit freundlichen Grüßen 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.


Mit freundlichen Grüßen 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.


Mit freundlichen Grüßen Karsten
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von noah1400 zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

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

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...