Top-Themen

Aktuelle Themen (A bis Z)

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 Batch - Zählschleife von 1-255 mit Umrechnung in Hexadezimal-Werte

Mitglied: Andichrist

Andichrist (Level 1) - Jetzt verbinden

08.02.2008, aktualisiert 23:31 Uhr, 10207 Aufrufe, 5 Kommentare

Meine derzeitige Lösung funktioniert mit dem Hilfsprogramm Hex2dec von Sysinternals.com.

Hallo,


ich habe eine Lösung "gebastelt" mit der ich zwar zum Ziel komme, aber für mich so "aufgebläht" wirkt!

Zu viele Zwischenschritte, Hilfsvariablen....

Die Batch funktioniert!

Mit folgenden Einschränkungen/ Schönheitsfehler:

- Sie beginnt erst bei 16 (x10) an zu zählen, damit ich einen 2-stelligen(!) Hex-Wert erhalte. Wünschenswert ab 1!
- Zugriff auf ein externes Hilfsprogramm (Batch ist nicht aus einem Guss)! "Reine" Batch-Lösung wäre mir lieber!

- Vielleicht gibt es auch einen einfacheren/ besseren Weg zum Ziel zu kommen als Meiner - ich hoffe es!


Kurzum: mir fehlt für die Batch noch der nötige Feinschliff!


ANMERKUNG: Falls die Batch beendet wird. Soll sie beim nächsten Aufruf genau an der Stelle weiter machen an der sie aufgehört hat! Der Wert wird in zahl.txt festgehalten!

01.
@echo off & setlocal
02.

03.

04.
rem === Zählschleife  DEC 16-255 / Umrechnung in HEX-Wert
05.
rem === Umrechnen erst ab DEC 16 um zweistelligen "10" HEX-Wert zu erhalten 
06.
rem === Mit Einsatz des Hilfsprogramm Hex2dec.exe / http://technet.microsoft.com/de-de/sysinternals/bb896736(en-us).aspx
07.

08.
if not exist "zahl.txt" set /a zahl=15
09.

10.
rem - Schritt 1: Wert aus "zahl.txt" auslesen 
11.
for /f %%i in (zahl.txt) do set /a zahl=%%i
12.
set /a zahl=zahl+1
13.
if %zahl%==256 set /a zahl=16
14.

15.
rem === UMrechnung DEC->HEX mit Hilfe von Sysinternals.com Hex2Dec.exe
16.
rem ===  Hilfsvariable %DEC%// Hilfsdatei "Hex.TXT"
17.
set dec=%zahl%
18.
hex2dec "%dec%" > hex.txt
19.
FOR /F "tokens=3 delims= " %%i in (hex.txt) do set hex=%%i & REM === OUTPUT z.B. 32 = 0x20
20.
del hex.txt>nul
21.
set hex=%hex:~2,4%  & REM === Zerlegen des Wertes z.B. 0x20  - OUTPUT: 20
22.

23.
set zahl=%hex%
24.

25.
rem === AUSGABE (1) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
26.
@echo (1) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
27.

28.
rem === %zahl% wieder in  DEC-wert für Zählschleife umrechnen!
29.
rem === Und Wert an Zahl.txt übergeben
30.
rem === UMrechnung HEX->DEc mit Hilfe von Sysinternals.com Hex2Dec.exe
31.
rem ===  Hilfsvariable %HEX%// Hilfsdatei "DEC.TXT"
32.

33.
set hex=%zahl%
34.

35.
hex2dec "0x"+"%hex%" > dec.txt & REM === hex2dec.exe verlangt für Hex-Umrechnung "0x" als Prefix
36.
FOR /F "tokens=3 delims= " %%i in (dec.txt) do set dec=%%i & REM ===  OUTPUT z.B. 0x20 = 32
37.
del dec.txt >nul
38.
set zahl=%dec%
39.

40.

41.
echo %zahl% > zahl.txt  & REM Achtung HEX-Wert(!) // Für weitere HEX-Verarbeitung %hex% nehmen! 
42.

43.
rem === AUSGABE (2) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
44.
@echo (2) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
45.

46.
endlocal
Mitglied: bastla
08.02.2008 um 22:42 Uhr
Hallo Andichrist!

Fändest Du es so besser:
01.
@echo off & setlocal
02.

03.
rem === Zählschleife  DEC 1-255 / Umrechnung in HEX-Wert
04.
rem === Ohne Einsatz von Hilfsprogrammen 
05.

06.
if not exist "zahl.txt" (
07.
	set /a zahl=0
08.
) else (
09.
	rem - Schritt 1: Wert aus "zahl.txt" auslesen 
10.
	set /p zahl=<"zahl.txt"
11.
)
12.

13.
set /a zahl+=1
14.
if %zahl%==256 set /a zahl=1
15.

16.
rem === UMrechnung DEC->HEX
17.
set dec=%zahl%
18.
set /a h1=%dec%/16
19.
set /a h2=%dec%-%h1%*16
20.

21.
if %h1%==15 set h1=F
22.
if %h1%==14 set h1=E
23.
if %h1%==13 set h1=D
24.
if %h1%==12 set h1=C
25.
if %h1%==11 set h1=B
26.
if %h1%==10 set h1=A
27.

28.
if %h2%==15 set hex=%h1%F
29.
if %h2%==14 set hex=%h1%E
30.
if %h2%==13 set hex=%h1%D
31.
if %h2%==12 set hex=%h1%C
32.
if %h2%==11 set hex=%h1%B
33.
if %h2%==10 set hex=%h1%A
34.
if %h2% lss 10 set hex=%h1%%h2%
35.

36.
set zahl=%hex%
37.

38.
rem === AUSGABE (1) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
39.
@echo (1) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
40.

41.
rem === %zahl% wieder in  DEC-wert für Zählschleife umrechnen!
42.
rem === Und Wert an Zahl.txt übergeben
43.
rem === UMrechnung HEX->DEc
44.

45.
set /a dec=0x%zahl%
46.
set zahl=%dec%
47.

48.
echo %zahl% >"zahl.txt"  & REM Achtung HEX-Wert(!) // Für weitere HEX-Verarbeitung %hex% nehmen! 
49.

50.
rem === AUSGABE (2) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
51.
@echo (2) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
Grüße
bastla

P.S.: Was machst Du eigentlich damit?

[Edit] Berücksichtigung von %h1%-Werten über 10 ergänzt. [/Edit]
Bitte warten ..
Mitglied: Andichrist
08.02.2008 um 22:53 Uhr
P.S.: Was machst Du eigentlich damit?

Ähmm!

Das willst Du gar nicht wissen! *grins*

Feedback kommt gleich!

Vorab danke

Andichrist
Bitte warten ..
Mitglied: bastla
08.02.2008 um 22:55 Uhr
Hallo Andichrist!

Hatte noch etwas hinzuzufügen - bitte neue Version verwenden (ist aber auch noch nicht optimiert) ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
08.02.2008 um 23:16 Uhr
... ob "Optimierung" überhaupt der richtige Begriff ist? Anyhow - zumindest leserlicher sollte es so sein:
01.
@echo off & setlocal
02.

03.
rem === Zählschleife  DEC 1-255 / Umrechnung in HEX-Wert
04.
rem === Ohne Einsatz von Hilfsprogrammen 
05.

06.
if not exist "zahl.txt" (
07.
	set /a zahl=0
08.
) else (
09.
	rem - Schritt 1: Wert aus "zahl.txt" auslesen 
10.
	set /p zahl=<"zahl.txt"
11.
)
12.

13.
set /a zahl+=1
14.
if %zahl%==256 set /a zahl=1
15.

16.
rem === UMrechnung DEC->HEX
17.
set dec=%zahl%
18.
set /a h1=%dec%/16
19.
set /a h2=%dec%-%h1%*16
20.
if %h1% geq 10 call :Convert %h1%
21.
if %h1% geq 10 set h1=%h%
22.
if %h2% geq 10 call :Convert %h2%
23.
if %h2% geq 10 set h2=%h%
24.
set hex=%h1%%h2%
25.

26.
set zahl=%hex%
27.

28.
rem === AUSGABE (1) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
29.
@echo (1) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
30.

31.
rem === %zahl% wieder in  DEC-wert für Zählschleife umrechnen!
32.
rem === Und Wert an Zahl.txt übergeben
33.
rem === UMrechnung HEX->DEc
34.

35.
set /a dec=0x%zahl%
36.
set zahl=%dec%
37.

38.
echo %zahl% >"zahl.txt"  & REM Achtung HEX-Wert(!) // Für weitere HEX-Verarbeitung %hex% nehmen! 
39.

40.
rem === AUSGABE (2) Zwischenergebnis - zwecks Überpüfung! Kann gelöscht werden
41.
@echo (2) ZAHL %zahl% --- DEC %dec% --- Hex %hex%
42.

43.
goto :eof
44.

45.
:Convert
46.
if %1==15 set h=F
47.
if %1==14 set h=E
48.
if %1==13 set h=D
49.
if %1==12 set h=C
50.
if %1==11 set h=B
51.
if %1==10 set h=A
52.
goto :eof
":Convert" wäre eigentlich eine Function, aber die gibt es ja in Batch nicht ...

Grüße
bastla
Bitte warten ..
Mitglied: Andichrist
08.02.2008 um 23:31 Uhr
... ob "Optimierung" überhaupt
der richtige Begriff ist? Anyhow - zumindest
leserlicher sollte es so sein:

Es sieht für mich erstens professioneller (+ meine Rechtschreibfehler ) aus, als meine Version und zweitens ist es eine Lösung ohne "Hilfsprogramm" (das wollte ich doch! )

Deine Routine habe ich soeben getestet! Tolle Lösung und funktioniert >>einwandfrei<<!

Ich danke Dir!

Gruß
Andichrist

PS: Die Routine wird benötigt um den letzten zweistelligen Wert der MAC-Adresse zu ändern!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch - Spalte von 1 hochzähle Spalte b fester Wert

gelöst Frage von freshman2017Batch & Shell2 Kommentare

Hallo Ihr, ich habe mit nachfolgendem Skript die Zahlen in "Spalte A" von 1 hochzählen lassen: in Spalte B ...

Windows Netzwerk

XXX.XXX.XXX.255 anpingbar

gelöst Frage von MiStWindows Netzwerk11 Kommentare

Hallo, ich habe irgendwie bei meinen IPs (SBS-2011-Netzwerk) ein kleines (Verständnis-)Problem Ich kann in unserem IP-Netz die IP mit ...

Batch & Shell

CSV kleinerer Wert (Batch)

Frage von jochengBatch & Shell3 Kommentare

Ich habe eine CSV Datei mit folgendem Inhalt: 29664;24,95 29664;12,95 29645;9,95 29645;9,95 29655;12,95 29655;24,95 29664;24,95 29655,12,95 29655,24,95 29664;12,95 29664;24,95 ...

Batch & Shell

Batch: Variable einen Wert zuweisen

gelöst Frage von veniplexBatch & Shell7 Kommentare

Hallo zusammen! Ich bin gerade am verzweifeln Ich habe in Batch 2 Variablen: Wenn ich mir von diesen den ...

Neue Wissensbeiträge
LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 12 StundenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 1 TagWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 3 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 4 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless17 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

LAN, WAN, Wireless
Bekannte Drosselungen bei Providern ?
Frage von HenereLAN, WAN, Wireless15 Kommentare

Servus zusammen, in bereits angefangen, aber ich hoffe dass der Beitrag hier mehr Informationen bringt. Sind Portdrosselungen bzw gezielte ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement14 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server12 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...