logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Interpreter skryptów .bat W10 - Albo foch kobiecy, albo po męsku w kulki leci

MES Mariusz 15 Paź 2017 19:26 855 5
REKLAMA
  • #1 16759009
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 224
    Czary w .bat

    Poniżej fragment skryptu .bat, typowy log, oraz log pokazujący sytuację nietypową problemową. Z reguły skrypt działa poprawnie, natomiast co kilka / kilkanaście włączeń komputera coś zjada albo minutę albo sekundę (i skrypt się wykrzacza).
    Albo foch kobiecy, albo po męsku w kulki leci, że interpreter Win10 wykonuje ten sam kod, raz tak, raz tak?
    Ma ktoś pomysł skąd te czary?

    Interpreter skryptów .bat W10 - Albo foch kobiecy, albo po męsku w kulki leci

    Kod: Bash
    Zaloguj się, aby zobaczyć kod



    Interpreter skryptów .bat W10 - Albo foch kobiecy, albo po męsku w kulki leci

    Interpreter skryptów .bat W10 - Albo foch kobiecy, albo po męsku w kulki leci
  • REKLAMA
  • Pomocny post
    #2 16759870
    WojtasJD
    Poziom 43  
    Posty: 13790
    Pomógł: 2920
    Ocena: 1587
    Czas masz w systemie dziesiętnym a polecenie SET /A potrafi przyjąć wartości liczbowe nie tyko dziesiętne.
    W systemie ósemkowym i dziesiętnym (również w szesnastkowym) 0...7 oznacza to samo jednak w ósemkowym nie ma "8" - dlatego wykłada Ci się skrypt o godzinie 08:02
    Zauważ, że o godzinie 07:05 pozornie jest OK - jednak po przypisaniu masz przycięte obie zmienne: godzina i minuta

    A to dlatego, że:
    SET /? napisał:
    Numeric values are decimal numbers, unless prefixed by 0x for hexadecimal numbers, and 0 for octal numbers.
    So 0x12 is the same as 18 is the same as 022. Please note that the octal notation can be confusing: 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits.


    IMO przekombinowany ten kawałek skryptu...
  • REKLAMA
  • #3 16759972
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 224
    Ciekawy trop. Ale jak w takim razie wyciągnąć do zmiennych liczbowych (dziesiętnych) bieżącą godzinę i minutę celem wykonania bardziej skomplikowanych obliczeń w skrypcie,.bat? Pozostaje dodać kolejnych kilka if-ów i jeszcze bqrdziej przekombinować skrypt... Chyba, że ktoś ma lepszy pomysł?
  • REKLAMA
  • #4 16760972
    WojtasJD
    Poziom 43  
    Posty: 13790
    Pomógł: 2920
    Ocena: 1587
    Można zastosować operację modulo, zamiast:
    set /a godzina=%godzina_string%
    dać:
    set /a godzina=100%godzina_string% %% 100

    i analogicznie dla minut.
  • REKLAMA
  • #5 16765199
    MES Mariusz
    Poziom 36  
    Posty: 5452
    Pomógł: 8
    Ocena: 224
    WojtasJD napisał:
    Można zastosować operację modulo, zamiast:
    set /a godzina=%godzina_string%
    dać:
    set /a godzina=100%godzina_string% %% 100

    i analogicznie dla minut.


    Coś nie zadziałało z modulo.

    2017-10-18_20:25:24,56 - ustawienie_czasu_zamkniecia_systemu_Pawel.bat: Czas: 20:25
    2017-10-18_20:25:24,61 - ustawienie_czasu_zamkniecia_systemu_Pawel.bat: Godzina_string: 20
    2017-10-18_20:25:25,30 - ustawienie_czasu_zamkniecia_systemu_Pawel.bat: Minuta_string: 25
    2017-10-18_20:25:25,34 - ustawienie_czasu_zamkniecia_systemu_Pawel.bat: Godzina: 20, minuta:
    2017-10-18_20:25:25,38 - ustawienie_czasu_zamkniecia_systemu_Pawel.bat: Godzina: 20:


    Muszę jeszcze nad tym pomyśleć.
  • #6 16768245
    clubs
    Poziom 38  
    Posty: 2219
    Pomógł: 629
    Ocena: 406
    Witam

    Może trzeba zainteresować się "czyszczeniem zmiennych"?
    set godzina=
    itp.
    skryptu .bat uruchamia kolejny a ten przekazuje do loga
REKLAMA