datbatch
Goto Top

(Batch) Time Variable modifizieren

Hallo User
Wie man in der Überschrift sehen kann möchte ich die Time Variable verändern .

Ich will es so machen das jede einzelnde Ziffer
In eine Variable gesetzt wird wie z.b
%stunde-ziffer-1%

Wär schön wenn das gehen würde
Ich würd mich über ein Feedback freuen...

Content-Key: 251004

Url: https://administrator.de/contentid/251004

Printed on: April 23, 2024 at 13:04 o'clock

Member: rubberman
Solution rubberman Oct 05, 2014, updated at Oct 06, 2014 at 18:53:37 (UTC)
Goto Top
Hallo DatBatch,

ich verstehe zwar den Sinn nicht, aber möglich ist das schon.
if "%time:~0,1%"==" " (set /a "stunde_ziffer_1=0") else set /a "stunde_ziffer_1=%time:~0,1%"  
set /a "stunde_ziffer_2=%time:~1,1%, minute_ziffer_1=%time:~3,1%, minute_ziffer_2=%time:~4,1%, sekunde_ziffer_1=%time:~6,1%, sekunde_ziffer_2=%time:~7,1%"  
Während die Variable %time% vom Batchprozess dynamisch aktualisiert wird, passiert das für die Einzelvariablen natürlich nicht und sie müssen stets neu berechnet werden.

Grüße
rubberman
Member: DatBatch
DatBatch Oct 06, 2014 at 14:37:25 (UTC)
Goto Top
Danke hat funktioniert aber was bring t das if am anfang
Member: rubberman
rubberman Oct 06, 2014 at 15:58:59 (UTC)
Goto Top
Hallo DatBatch,

einstellige Stunden haben (zumindest unter meinem Win7) keine vorangestellte Null, sondern nur ein Leerzeichen. Die IF Anweisung fängt diesen Fall ab und setzt statt Leerzeichen eine Null in der Variablen stunde_ziffer_1.

Grüße
rubberman
Member: DatBatch
DatBatch Oct 06, 2014 at 18:53:12 (UTC)
Goto Top
Ok und ach ja ich hatte mit time vor eine art ASCII Uhr zu machen da muss ja jede ziffer als variable genommen werden

Aber ein Problem :
Da z.b. die acht
OOOO
O O
OOOO
O O
OOOO

Da die acht mehrere zeilen hat weiß ich nicht
Wie ich eine Mehrzeilige variable machen kann
Hat wer ne Lösung ist jetzt relativ vom titel abgwiesen aber trotztdem sonst kann ich auch einen neuen Thread erstellen
Member: rubberman
rubberman Oct 06, 2014 updated at 20:04:41 (UTC)
Goto Top
Einfache (aber hässliche) Variante: Für jede Ziffer und jede Zeile eine Variable definieren, die exakt die auszugebende Zeichenanordnung enthält.

@echo off &setlocal
set "[1.1]=   O "&set "[2.1]=OOOO "&set "[3.1]=OOOO "&set "[4.1]=O  O "&set "[5.1]=OOOO "&set "[6.1]=OOOO "&set "[7.1]=OOOO "&set "[8.1]=OOOO "&set "[9.1]=OOOO "&set "[0.1]=OOOO "&set "[D.1]=     "  
set "[1.2]=   O "&set "[2.2]=   O "&set "[3.2]=   O "&set "[4.2]=O  O "&set "[5.2]=O    "&set "[6.2]=O    "&set "[7.2]=   O "&set "[8.2]=O  O "&set "[9.2]=O  O "&set "[0.2]=O  O "&set "[D.2]= OO  "  
set "[1.3]=   O "&set "[2.3]=OOOO "&set "[3.3]=OOOO "&set "[4.3]=OOOO "&set "[5.3]=OOOO "&set "[6.3]=OOOO "&set "[7.3]=   O "&set "[8.3]=OOOO "&set "[9.3]=OOOO "&set "[0.3]=O  O "&set "[D.3]=     "  
set "[1.4]=   O "&set "[2.4]=O    "&set "[3.4]=   O "&set "[4.4]=   O "&set "[5.4]=   O "&set "[6.4]=O  O "&set "[7.4]=   O "&set "[8.4]=O  O "&set "[9.4]=   O "&set "[0.4]=O  O "&set "[D.4]= OO  "  
set "[1.5]=   O "&set "[2.5]=OOOO "&set "[3.5]=OOOO "&set "[4.5]=   O "&set "[5.5]=OOOO "&set "[6.5]=OOOO "&set "[7.5]=   O "&set "[8.5]=OOOO "&set "[9.5]=OOOO "&set "[0.5]=OOOO "&set "[D.5]=     "  

set /a "num1=2, num2=1, num3=5, num4=8, num5=3, num6=7"  

setlocal EnableDelayedExpansion
echo(
echo ![%num1%.1]!![%num2%.1]!![D.1]!![%num3%.1]!![%num4%.1]!![D.1]!![%num5%.1]!![%num6%.1]!
echo ![%num1%.2]!![%num2%.2]!![D.2]!![%num3%.2]!![%num4%.2]!![D.2]!![%num5%.2]!![%num6%.2]!
echo ![%num1%.3]!![%num2%.3]!![D.3]!![%num3%.3]!![%num4%.3]!![D.3]!![%num5%.3]!![%num6%.3]!
echo ![%num1%.4]!![%num2%.4]!![D.4]!![%num3%.4]!![%num4%.4]!![D.4]!![%num5%.4]!![%num6%.4]!
echo ![%num1%.5]!![%num2%.5]!![D.5]!![%num3%.5]!![%num4%.5]!![D.5]!![%num5%.5]!![%num6%.5]!
echo(
endlocal

pause
Es gibt andere Varianten, die aber ungleich schwieriger zu verstehen sind.

Grüße
rubberman
Member: DatBatch
DatBatch Oct 07, 2014 at 05:11:06 (UTC)
Goto Top
Ne eher nicht könnte man vieleicht die ziffer in txt datein schreiben und dann mit type auslesen
Aber das Problem ist ja das ich eine Variable will mit FOR klappt das aber leider ohne Leerzeichen hast du vielleicht dazu ne Lösung
Member: rubberman
rubberman Oct 07, 2014 at 15:56:22 (UTC)
Goto Top
Nachdem ich deine Antwort dreimal gelesen habe, weiß ich immer noch nicht wo dein Problem liegt (könnte aber auch am Fehlen von jeglichem Punkt und Komma liegen).

Egal. Eigentlich habe ich dir sowieso schon alles vorgekaut, dann kommt es auf die paar restlichen Zeilen auch nicht mehr an ...
@echo off &setlocal EnableDelayedExpansion

call :initvars

set "sek="  
for /l %%i in (0) do (
  set "zeit=!time: =0!"  
  set /a "num1=!zeit:~0,1!, num2=!zeit:~1,1!, num3=!zeit:~3,1!, num4=!zeit:~4,1!, num5=!zeit:~6,1!, num6=!zeit:~7,1!"  
  if "!sek!" neq "!num6!" (  
    call :output
    set /a "sek=num6"  
  )
  >nul ping -n 1 localhost
)

exit /b

:initvars
set "[1.1]=   O "&set "[2.1]=OOOO "&set "[3.1]=OOOO "&set "[4.1]=O  O "&set "[5.1]=OOOO "&set "[6.1]=OOOO "&set "[7.1]=OOOO "&set "[8.1]=OOOO "&set "[9.1]=OOOO "&set "[0.1]=OOOO "&set "[D.1]=     "  
set "[1.2]=   O "&set "[2.2]=   O "&set "[3.2]=   O "&set "[4.2]=O  O "&set "[5.2]=O    "&set "[6.2]=O    "&set "[7.2]=   O "&set "[8.2]=O  O "&set "[9.2]=O  O "&set "[0.2]=O  O "&set "[D.2]= OO  "  
set "[1.3]=   O "&set "[2.3]=OOOO "&set "[3.3]=OOOO "&set "[4.3]=OOOO "&set "[5.3]=OOOO "&set "[6.3]=OOOO "&set "[7.3]=   O "&set "[8.3]=OOOO "&set "[9.3]=OOOO "&set "[0.3]=O  O "&set "[D.3]=     "  
set "[1.4]=   O "&set "[2.4]=O    "&set "[3.4]=   O "&set "[4.4]=   O "&set "[5.4]=   O "&set "[6.4]=O  O "&set "[7.4]=   O "&set "[8.4]=O  O "&set "[9.4]=   O "&set "[0.4]=O  O "&set "[D.4]= OO  "  
set "[1.5]=   O "&set "[2.5]=OOOO "&set "[3.5]=OOOO "&set "[4.5]=   O "&set "[5.5]=OOOO "&set "[6.5]=OOOO "&set "[7.5]=   O "&set "[8.5]=OOOO "&set "[9.5]=OOOO "&set "[0.5]=OOOO "&set "[D.5]=     "  
exit /b

:output
cls
echo(
echo  ![%num1%.1]!![%num2%.1]!![D.1]!![%num3%.1]!![%num4%.1]!![D.1]!![%num5%.1]!![%num6%.1]!
echo  ![%num1%.2]!![%num2%.2]!![D.2]!![%num3%.2]!![%num4%.2]!![D.2]!![%num5%.2]!![%num6%.2]!
echo  ![%num1%.3]!![%num2%.3]!![D.3]!![%num3%.3]!![%num4%.3]!![D.3]!![%num5%.3]!![%num6%.3]!
echo  ![%num1%.4]!![%num2%.4]!![D.4]!![%num3%.4]!![%num4%.4]!![D.4]!![%num5%.4]!![%num6%.4]!
echo  ![%num1%.5]!![%num2%.5]!![D.5]!![%num3%.5]!![%num4%.5]!![D.5]!![%num5%.5]!![%num6%.5]!
echo(
exit /b
Grüße
rubberman
Member: DatBatch
DatBatch Oct 07, 2014 at 16:13:52 (UTC)
Goto Top
Okay...