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

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, 4066 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Exchange Server
gelöst SBS2011 - im Exchange mobile Geräte löschen (4)

Frage von MiSt zum Thema Exchange Server ...

Exchange Server
Inhalt von Postfächern in Exchange löschen (9)

Frage von m.reeger zum Thema Exchange Server ...

iOS
SPAM Einladungen im iCloud Kalender löschen (1)

Tipp von Frank zum Thema iOS ...

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 ...