Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Sre Maj 28, 2008 3:30 pm Naslov sporočila: |
|
|
Se opravičujem s9876, če sem te "mučil" z temi zadevami. Ampak res mi zadeva ni delovala z programom, ki si ga pripel. Sedaj sem zadevo probal na dugem računlniku in zadeva z istimi nastavitvami deluje. Zakaj mi na prvem računalniku ne deluje zaenkrat ne vem.
Še enkrat hvala za potrpežlivost tebi in vsem ostalim
lp
|
|
Nazaj na vrh |
|
|
s9876 Član
Pridružen-a: Pon 13 Nov 2006 16:07 Prispevkov: 23 Aktiv.: 0.11
|
Objavljeno: Sre Maj 28, 2008 5:01 pm Naslov sporočila: |
|
|
npr izpis date /t je drugacen, oz odvisen od regionalnih nastavitev v kontrolni plosci
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Čet Maj 29, 2008 12:44 pm Naslov sporočila: |
|
|
To vem in sem probal na tistem prvem računalniku razne regionalne nastavitve pa zadeva ni delala
lp
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Pet Dec 02, 2022 1:16 pm Naslov sporočila: |
|
|
Pozdravljeni
Da obudim to tem, ker mi nekaj ni jasno. V Windowsih sem spremenil nastavitev formata za datum na dd.MM.yyyy. Sedaj pa imam problem da z spodnjo kodo (spremenjena je da naj izpisuje samo y) ne dobim izpis za dan. Pa čudno se vsa "zamakne". V kodi je potem m dejansko leto d je dejansko mesec, y bi moral potem biti dan vendar ga ne izpiše (priponka)
Koda: |
@echo off
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set year=%%c
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set mon=%%c
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set day=%%c
set y=%year%
set m=%mon%
set d=%day%
rem set /a d= x-1
set jintian=%y%_%y%_%y%
echo Reports_%jintian%.asc
pause |
V kolikor pa v Windowsih izberem format zapisa za datum d.M.yyyy. pa zadeva deluje z zgornjo kodo, le da imam problem tu ker mi pri pri izpisu za mesec in dan izpusti 0 Izpis mora biti take oblike Reports_2022_01_01.
Že vnaprej hvala
Opis: |
|
Velikost datoteke: |
1.19 KB |
Pogledana: |
1228 krat |
|
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Pet Dec 02, 2022 3:26 pm Naslov sporočila: |
|
|
Dodaj pogoj, da če ni desetic, dodaš ničlo. Nekaj takega:
Koda: |
if "%day:~0,1%" == " " set day=0%day:~1,1% |
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Pet Dec 02, 2022 8:26 pm Naslov sporočila: |
|
|
Hvala za predlog, vendar ne deluje kot bi želel. Kodo sem nekoliko spremenil. Če želim izpis na tekoči datum dela v redu. Dobim izpis Reports_2022-12-02. Želim pa izpis za en dan nazaj (v kodi "set /a d=x-1"), torej Reports_2022_12_01, izpiše mi pa Reports_2022_12_1. Torej mi manjkajo desetice.
Koda: |
@echo off
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set year=%%c
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set mon=%%b
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set day=%%a
set y=%year%
set m=%mon%
set x=%day%
set /a d= x-1
set if "%d:~0,1%" == " " set dd=0%d:~1,1%
set jintian=%y%_%m%_%d%
echo Reports_%jintian%.asc
pause |
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Sob Dec 03, 2022 11:15 am Naslov sporočila: |
|
|
Moja koda predvideva, da je day niz in je v primeru manj kot 10 namesto desetic presledek. Ti pa imaš število. Primerjati moraš kot število ali pa iti na nize.
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Sob Dec 03, 2022 4:34 pm Naslov sporočila: |
|
|
Si lahko bolj kokreten? Ne razumem čisto te kode:
Koda: |
if "%day:~0,1%" == " " set day=0%day:~1,1% |
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Sob Dec 03, 2022 5:05 pm Naslov sporočila: |
|
|
Šele sedaj vidim, da si pred mojo kodo dodal 'set'. Čemu? Set je naprej v kodi.
Koda: |
if "%day:~0,1%" == " " set day=0%day:~1,1% |
Če je prvi znak spremenljivke day enak presledku, potem se day priredi presledek + drugi znak iz začetne spremenljivke.
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Sob Dec 03, 2022 8:41 pm Naslov sporočila: |
|
|
Ja moja napaka v kodi kar se tiče ukaza set. To kodo sem hotel pripet:
Koda: |
@echo off
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set year=%%c
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set mon=%%b
for /f "tokens=2-4 delims=. " %%a in ('date /t') do set day=%%a
set y=%year%
set m=%mon%
set x=%day%
set /a day= x-1
if "%day:~0,1%" == "" set day=0%day:~1,1%
set jintian=%y%_%m%_%day%
echo Reports_%jintian%.asc
pause |
Pri meni prvega znaka (desetic) ni. Če odštejem od današnjega dne (set /a day= x-1) en dan dobim 2 in v kolikor datum ni dvomestno število moram pred enice vriniti 0, da dobim izpis Reports_2022.12.02. Očitno delam nekaj narobe...
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Ned Dec 04, 2022 9:12 am Naslov sporočila: |
|
|
Takole imam dejansko narejeno, da dobim ure kot niz z vodilno ničlo, ki je sicer nadomeščena s presledkom.
Koda: |
set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour% |
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Ned Dec 04, 2022 8:40 pm Naslov sporočila: |
|
|
Moram priznati da ne razumem tega. Lahko to razložiš:
Citiram: |
dobim ure kot niz z vodilno ničlo, ki je sicer nadomeščena s presledkom |
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Pon Dec 05, 2022 11:01 am Naslov sporočila: |
|
|
Kaj je nerazumljivo?
Če sedaj (pravzaprav malo nazaj) pogledam spremenljivko time, dobim " 9:56:52,35". Izraz %time:~0,2% ima vrednost " 9". Torej s presledkom na začetku. Namesto presledka moram dati 0, da ustreza ISO obliki.
|
|
Nazaj na vrh |
|
|
rimci Član
Pridružen-a: Sre 30 Apr 2003 19:01 Prispevkov: 461 Aktiv.: 2.07 Kraj: Prekmurje
|
Objavljeno: Tor Dec 06, 2022 8:39 pm Naslov sporočila: |
|
|
Hvala za razlago. Problem pri meni je to kar si že napisal v enem od zgornjih sporočil
Citiram: |
Primerjati moraš kot število ali pa iti na nize |
Dan v datumu, ki ga imam je niz, odštejem en dan ki pa je število....
Enostaven primer
Koda: |
set var=07
echo %var%
set var1=01
echo %var1%
set /A var2=%var% + var1%
echo %var2%
|
Število 07 in 01 sta definirani kot niz, zakaj je rezultat 8 in ne 08.
|
|
Nazaj na vrh |
|
|
bostjang Član
Pridružen-a: Tor 03 Jan 2006 15:29 Prispevkov: 3175 Aktiv.: 14.25 Kraj: Postojna
|
Objavljeno: Sre Dec 07, 2022 10:20 am Naslov sporočila: |
|
|
Ne poznam vseh pravil batch sintakse, ampak za seštevanje se mora pretvoriti v številke, ki pač nimajo definiranih vodilnih ničel. Enak rezultat bi dobili tudi v raznih skriptnih jezikih (kjer + ne pomeni tudi združevanja nizov).
|
|
Nazaj na vrh |
|
|
|