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

Führende Nullen in Zahlen löschen

Frage Entwicklung Batch & Shell

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

24.01.2013, aktualisiert 21:56 Uhr, 4706 Aufrufe, 6 Kommentare

Hallo Batchler,

es geht um Auswertung von Datum- und Stunden-Zahlen. Da kommen bisweilen auch führende Nullen vor.
Nun wollte ich die drei Variablen in einer Doppel-Schleife bereinigen. Leider ohne positivem Ergebnis.

folgendes Problem gilt es zu lösen:

AT1d: --24-- AT1h: --09-- AT1m: --28--
Doppel-Schleife
AT1d: --24-- AT1h: --09-- AT1m: --28--
Berechnung
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.


01.
For /F "tokens=1,4,5 Delims=.: " %%i in ('dir /tc "%timLog%"^|Find /i "%txc%"') Do @( 
02.
set "AT1d=%%i"&set "AT1h=%%j"&set "AT1m=%%k") 
03.
echo AT1d: --!AT1d!--&echo AT1h: --!AT1h!--&echo AT1m: --!AT1m!-- 
04.
 
05.
FOR %%i IN (!AT1d:~0,1!,!AT1h:~0,1!,!AT1m:~0,1!) DO @if %%i equ 0 set AT=%%i & For %%j IN (AT1d,AT1h,AT1m) DO @set "%%j=!AT:~1,1!" 
06.
 
07.
echo AT1d: --!AT1d!--&echo AT1h: --!AT1h!--&echo AT1m: --!AT1m!-- 
08.
if "%mont2:~-2,2%"=="ja" echo AT1d: --!AT1d!--&echo AT1h: --!AT1h!--&echo AT1m: --!AT1m!-- 
09.
set /A ATm=(%AT1h%*60)+%AT1m%
Danke schon jetzt für die freundliche Unterstützung.

max5moritz
Mitglied: rubberman
24.01.2013, aktualisiert um 22:15 Uhr
Hallo max5moritz.

Am einfachsten geht das mit einer FOR /F Schleife. Das Prinzip sieht so aus:
01.
set "string=09" 
02.
 
03.
set /a num=0 
04.
for /f "tokens=* delims=0" %%i in ("%string%") do set /a num=%%i 
05.
 
06.
echo %num%
Grüße
rubberman

PS: Wenn der eingehende String IMMER 2-stellig ist, wäre auch folgendes denkbar:
set /a "num = 1%string%, num %%= 100"
Bitte warten ..
Mitglied: max5moritz
24.01.2013 um 22:46 Uhr
@rubberman

Danke für die schnelle Antwort, doch meine Wunschlösung sieht anders aus. Im folgenden mein Ansatz, der jedoch noch nicht der "letzte Schrei", weil, wie ich finde noch zu viel Zeilen

01.
For /F "tokens=1,4,5 Delims=.: " %%i in ('dir /tc "%timLog%"^|Find /i "%txc%"') Do @( 
02.
set "AT1d=%%i"&set "AT1h=%%j"&set "AT1m=%%k") 
03.
FOR %%i IN (!AT1d!,!AT1h!,!AT1m!) DO @( 
04.
	set /A ATn+=1 
05.
	set /A AT2=%%i+0  2>nul 
06.
	if %%i neq !AT2! if !ATn! equ 1 set "AT1d=!AT1d:~1,1!" 
07.
	if %%i neq !AT2! if !ATn! equ 2 set "AT1h=!AT1h:~1,1!" 
08.
	if %%i neq !AT2! if !ATn! equ 3 set "AT1m=!AT1d:~1,1!" 
09.
10.
if "%mont2:~-2,2%"=="ja" echo AT1d: --!AT1d!--&echo AT1h: --!AT1h!--&echo AT1m: --!AT1m!--
Es geht also darum, wie ich den Inhalt der 2. Schleife (ab 3.Zeile) so komprimiere, dass vielleicht nur ein Zwei- oder Einzeiler daraus wird...
Ich hoffe, dass mein Wunsch nun nachvollziehbarer ist.

max5moritz
Bitte warten ..
Mitglied: rubberman
24.01.2013 um 22:59 Uhr
Hallo max5moritz.

Was kommt denn eigentlich rein? Also welche Strings würden sich denn beispielhaft in %%i, %%j und %%k finden und was soll am Ende daraus werden?

BTW: Was stört dich an 2 Zeilen mehr oder weniger? Das ist doch völlig belanglos.

Grüße
rubberman
Bitte warten ..
Mitglied: max5moritz
24.01.2013, aktualisiert um 23:20 Uhr
Hallo rubberman,

es sind zweistellige Elemente in der Form: " 1", "02" oder eben "21" etc. pp.
Es ist der Tag und die Uhrzeit einer Datei.
Tag : AT1d
Stunde: At1h
Minute: At1m

Und da ich zwecks Berechnung diese Logik zweimal brauche, wird es schon interessant, ob ich Zeilen sparen kann
Schließlich will ich mit den Zahlen ja dann weiter rechnen, was nur geht, wenn es halt Zahlen sind.

Na ja, natürlich kann ich auch mit meiner Lösung leben. Es war halt eine Frage, ob es nicht auch einfacher oder
eben auch besser geht.

Gruß
max5moritz
Bitte warten ..
Mitglied: rubberman
24.01.2013, aktualisiert um 23:57 Uhr
Hallo max5moritz.

Etwa so?
01.
for /f "tokens=1,4,5 delims=.: " %%i in ('dir /tc "%timLog%"^|find /i "%txc%"') do ( 
02.
  set /a "AT1d = 100%%i, AT1d %%= 100, AT1h = 100%%j, AT1h %%= 100, AT1m = 100%%k, AT1m %%= 100" 
03.
04.
echo AT1d: --!AT1d!--&echo AT1h: --!AT1h!--&echo AT1m: --!AT1m!--
Grüße
rubberman
Bitte warten ..
Mitglied: max5moritz
25.01.2013, aktualisiert um 19:59 Uhr
@rubberman

Danke, genau das war es, was ich suchte.

Ich hatte zwischenzeitlich diese Lösung erarbeitet:

01.
For /F "tokens=1-5 Delims=.: " %%i in ('dir /tw "%Media2%"^|Find /i ".%oxc%"') Do @( 
02.
	set /A BTdd=1%%i-100 
03.
	set /A BTmm=1%%j-100 
04.
	set /A BTjj=%%k/4*4 
05.
	set /A BT1h=1%%l-100 
06.
	set /A BT1m=1%%m-100 
07.
	if not !BTjj! equ %%k set "BTSJ=no"  
08.
09.
set /A BTGm=(%BT1h%*60)+%BT1m%
Deine gefällt mir jedoch besser. Eine Anleitung habe ich inzwischen auch daraus gemacht. Vielleicht kann es ja jemand noch einmal gebrauchen.

Also herzlichen Dank noch einmal - wieder einen "Fall" gelöst.

Grüße
max5moritz
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
In Batch random-Zahlen erzeugen mit führenden Nullen
gelöst Frage von DerWoWussteBatch & Shell6 Kommentare

Moin Kollegen. Ich kann per Variable %random% zwar Zufallszahlen erzeugen, weiß jedoch nicht, wie ich führende Nullen einbauen kann. ...

Batch & Shell
Führende Nullen hinzufügen
gelöst Frage von Erik72Batch & Shell6 Kommentare

Hallo ihr Lieben, ich habe folgendes Script und wünsche führende Nullen bei der Ausgabe. Kann mir bitte jemand helfen? ...

Batch & Shell
PDFTK Zeichnungen stempeln mit führender NULL
Frage von Herby-zBatch & Shell4 Kommentare

Hallo zusammen, ich würde gerne mit PDFTK meine Zeichnungen stempeln Die Zeichnungen haben folgendes Format 00026973.pdf, also eine 8-stellige ...

Batch & Shell
Zeitstempel mit führenden Nullen in den Stunden vor 10
gelöst Frage von jan99Batch & Shell4 Kommentare

Moin ! ich generiere einen Zeitstempel wie folgt: FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c-%%b-%%a ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 19 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 21 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...