Windows

Datum u nazivu File-a Windows NT

Keklja uto 23.8.2022 15:41

Pozz

Na poslu imamo prastaro racunalo sa Windows NT. Svaki dan u odredjeno vrijeme racunalo napravi Backup i odredjene Fileove zipuje i posalje na server. Taj dio je ok i sve radi. Problem je sto taj novi .zip File mora imati danasnji datum i sve mora raditi automatski. Napisao sam Batch file koji to radi ali imam problem sa datumom. Na novijim windowsima moze se u cmd pomocu naredbe %DATE% ispisati datum a moze se i razdvojiti dani, mjeseci i godina. Kod Windows NT to ne fukncionira. Ima naredba Date i Time da bih dobio datum i vrijeme ali ih ne mogu razdvojiti. Npr datum koji spremiti u novu varijbalu pomocu naredbe 

set datum = %date%

i ako zelim da razvojim %date% na dane mjesece i godinu normalno koristim sljedece naredbe:

 

SET ds=%date: =0%
SET DD=%ds:~0,2%
SET MM=%ds:~3,2%
SET YYYY=%ds:~6,4%
SET YY=%YYYY:~2,2%
SET ts=%time: =0%
SET hh=%ts:~0,2%
SET min=%ts:~3,2%
SET ss=%ts:~6,2%

 

U Windows NT to ne fukcionira a ako u naziv samo stavim %datum%:

ren text.txt %datum%.txt

dobit cu ovako nesto

date.txt

 

Da li ima starijih clanova koji bi mi mogli pomoci oko ovog goruceg problema?

 

Hvala

 

ihush sri 24.8.2022 10:12

-postoji vjerojatno desetak načina-riješenja, ali i problema-pitanja-podpitanja, npr koja winver +sp .. npr 3.5+sp4 ...

-u primjeru-pitanju imašds dok postaviš pitanje za %datum% ... jasno ti je da to nije ista varijabla? ili ds ili datum ovisno što u skripti napišeš nema promjena .. kao i to da je sys varijaba date, ne datum itd.

 

-prvo daj info što ti ispiše u CMDu

 

SET (+enter)

DATE

 

ili

@ECHO %DATE%
@ECHO %Time%

 

Keklja sri 24.8.2022 10:18

Poslijepodne sam opet za tim racunalom pa cu napisati tocno sto dobijem. Takodjer cu napisati i tocno koja verzija Windowsa je. 

Jasno mi je da su varijable drugacije, nisam ih tako ni pisao nego kao primjere sam navodio.

Ugl znam da kada u cmd napisem samo date (bez znaka postotka) dobijem danasnji datum. Isto tako i kada napisem time. 

Pomocu set %datum% = date snimi mi danasnji datum u varijablu datum i kada napisem samo %datum% dobijem danasnji datum. I to je sve. Tu zapnem. Ne mogu razdvojit. Ali vise informacija kroz koji sat.

VladRi sri 24.8.2022 10:32

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "result=%MM%%DD%%YYYY%"

echo %result% (test)

 

 

i onda mozes napraviti datoteku sa tim imenom i nekom ext. (neki put u batchu trebas imati i %%result%% (mislim da je za for ili tako nes - alo probaj ovako))

 

...po potrebi mozes dodati HH min i sec

ihush sri 24.8.2022 11:15

-ok, to je to :) ..

-napiši točno što ti ispiše, format-duljinu.. (važno, jer tako režeš dijelove stringa, u skripti posljednji brojevi.. i ako je to različito a prepisao si skriptu tad dobiješ prazno-ništa itd..).

zato trebamo ispis SETa da vidimo configuraciju i što je dodano u varijablama kao i format datuma, usa-hr i duljina.

 

kad variabli %datum% postaviš vrijednost =date i kad to želiš ispisati na ekranu, @ECHO %datum% dobit ćeš zapisan datum (? tj to ponavljam-utvrđujem kao podatak koji si već dao)..

 

iduća stvar kad varijabli %ds% dodjeliš vrijednost, početak skripte, urednije-logičnije-točnije.. napravi to ovako (koristit ću varijablu 'datum' ne ds)

set datum=%date: =0%

odmah provjeri što je u varijabli zapisano

@ECHO %datum%

 

ovisno o regionalnim postavkama i formatu-duljini dobiješ nešto kao MM.DD.YY ili DD.MM.YYYY ... važno usa-hr mjesec-dan kao i duljina godine 2-4 znamenke + long format datuma koji uključuje i naziv dana u tjednu kao srijeda i naziv mjeseca umjesto broja.. ovisno o tome, u kratkom formatu je godina Y na 6tom mjestu ('dd.mm.' = 6 slova-chr$ koja preskačeš, tj brojač ide od nultog znaka-prvo slovo) i zato je u skripti trimanje od 6,2 za godinu.

 

npr ako ti je godina u dugom formatu YYYY 4 znamenke tad bi u jednom redu to mogao napisati ovako

set datum=%date:~6,4%_%date:~3,2%_%date:~0,2%

@ECHO %datum%

ako je 2-znamenkasti, umjesto 4 pišeš 2..

-to je 'bolji' oblik-format, yyyy_mm_dd .. zbog sortiranja, obrnuto od standardnog datuma. + ako je kratki oblik yy tad imaš milenijum bug, tj možeš svakoj godini po kriteriju logike dodati prefix 19 ili 20, tj dodaš prefix string 20 za sve novo (samo starija arhiva prije 2000te ima 19xx..).

 

npr

set datum=20%date:~6,2%_%date:~3,2%_%date:~0,2%

@ECHO %datum%

 

.. dalje znaš :)

 

tj ne piši skriptu napamet-unaprijed (ili copy-paste s interneta) nego idi korak po korak .. svaki put ispiši na ekranu da bi vidio što imaš, klasično 'debugiranje' koda (nevažno što je to samo cmd ili batch skripta..) uz ograničenja što možeš u jednoj dos-cmd liniji i kako nekek stvari moraš pisati u skripti (sintaxa i posebni znaci kao navodnici itd..).

-piši sve u notepadu-textu, koristi copy-paste, koristi doskey itd.. i ništa ne kopiraj kao gotovo riješenje (primjer s datumom ds je klasičan) tj time daješ do znanja da nisi programer i da se ne snalaziš, moraš paziti na razliku formata datuma, mi i usa.. dok će primjeri 99% biti za usa.

 

kao što je varijabla datum možeš jednako napraviti varijablu vrijeme .. i treću datumvrijeme, poželjno prije kreiranja backupa (zipa) tj u početku kreiranja kao timestamp koji će odgovarati nazivu tj ovisno o trajanju izrade arhive ako to radiš poslje imaš razliku u recimo sekundama kreiranja filea i vremena kad je arhiviranje završeno kao i problem ako to traje duže-satima ili kad testiraš na malim fileovima itd..

 

pripazi na razliku kad nešto pišeš u cmd-u direktno i kad to isto radiš u batch skripti kao i stara ograničenja duljine naziva-patha-filea i nedozvoljeni znaci kao razmak.. različito se ponaša cmd i skripta recimo s razmak-spaceom.. i moraš koristiti 'navodnike' za sve kao % ili " .. a to može biti ponekad zbunjujuće-nepregledno.

 

+ važno, varijabla koju kreiraš u skripti gubi vrijednost završetkom skripte, kao i u cmd-u.. trajne variable definiraš u osu-congif kao npr path i tad ih možeš koristiti stalno kao i sys variable date i time i sl. ..

koristi doskey, tek od xp-2000 je to uključeno u cmd dok se ne sjećam kako radi copy-paste, desni klik miša je paste iz memorije, ostalo radiš tipkama ne ctrl+x+v nego shift+insert itd (dosovske copypaste tipke).

ili svaki put pokrećeš skriptu ali tad imaš problem debugiranja tj nemaš korake.. tj možeš 'brejkati' pauziranjem 'pause' i kontrolirati stanje varijabli u koracima skripte no to nije programerski debuger tj spetljano je..

Keklja sri 24.8.2022 12:48
VladRi kaže...

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"

 

Nakon ove naredbe dobije gresku "%%a  cant be processed syntactically at this point


set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "result=%MM%%DD%%YYYY%"

echo %result% (test)

 

 

i onda mozes napraviti datoteku sa tim imenom i nekom ext. (neki put u batchu trebas imati i %%result%% (mislim da je za for ili tako nes - alo probaj ovako))

 

...po potrebi mozes dodati HH min i sec

 

Keklja sri 24.8.2022 13:28

Ovako

testirao sam sljedece i u cmd i preko Skripte

 

Skripta:

SET ds=%date: =0% i Enter

zatim ispisem 

@echo %ds% i dobijem : =0

 

SET test=%date%

Nakon @echo %test% skripta ne pokaze nista, kao da ignorira ovu naredbu

 

 

CMD:

SET ds=%date: =0% i Enter

@Echo %ds% i dobijem %date: =0%

VladRi sri 24.8.2022 13:32
Keklja kaže...

Ovako

testirao sam sljedece i u cmd i preko Skripte

 

Skripta:

SET ds=%date: =0% i Enter

zatim ispisem 

@echo %ds% i dobijem : =0

 

SET test=%date%

Nakon @echo %test% skripta ne pokaze nista, kao da ignorira ovu naredbu

 

 

CMD:

SET ds=%date: =0% i Enter

@Echo %ds% i dobijem %date: =0%

 ovo sto si napisao nema smisla jer je varijabla %date% i ne moze biti nista drugo. moze eventualno biti echo %date%:=0 ali i dalje ne bi dobio nis pametno. Probaj ovo moje zadnje pa javi

 

Keklja sri 24.8.2022 13:43

ok ima nekog napretka

nakon ove naredbe sto si gore napisao dobijem datum:

24.08.2022

zatim sam kao sljedecu naredbu napisao set

SET "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"

SET "result=%DD%%MM%%YYYY%

echo %result%

 

Nisam tocno sigurno sto predstavlja YY=%dt:~2,2 pa sam to izbrisao ali je rezultat isti

 

i dobio sam 208.24.0

Keklja sri 24.8.2022 13:50

ovako izgleda na Windows XP:

 

SET ds=%date: =0%
SET DD=%ds:~0,2%
SET MM=%ds:~3,2%
SET YYYY=%ds:~6,4%
SET YY=%YYYY:~2,2%

 

i dobijem sve tocno. Od tu sam uzeo tu naredbu %date: =0%. I da znam sto treba biti YY

Keklja sri 24.8.2022 13:59

Super! Radi sve. mogu sada i dodati datum u naziv File. Puno hvala svima

 

ovako izgleda skripta na kraju:

 

@Echo off
for /F "tokens=2" %%i in ('date /t') do set dt=%%i
echo %dt%

set "YYYY=%dt:~6,4%" & set "MM=%dt:~3,2" & set "DD=%dt:~0,2%"
set "result=%DD%%MM%%YYYY%"

 

cd D:\TEST\
ren test.txt %result%.txt

 

Keklja sri 24.8.2022 15:45

Jos jedna stvar ne funkcionira

U skripti imam naredbu da se poveze sa serverom i to funkcionira super. Hard disk sa servera mapiram pod slovo H i imam pristup njemu. Medjutim potrebna mi je obavijest ako nema vezu sa serverom. Na windows XP napravio sam to ovako:

 

if exist h: goto startcopy
msg * %username% Ne moze se napraviti Backup! Molimo vas da se javite IT osoblju!
goto end

 

sada skripta stoji na tom dijelu, bez obavijesti i nakon nekog vremena se zatvori. Kako vidim msg * funkcionira tek od Windows XP. Probao sam umjesto msg * upisati net send localhost "text text" ali nista se ne dogadja.

VladRi sri 24.8.2022 16:09
Keklja kaže...

Problem je u IF naredbi...

 if exist h: goto :nesto *

 

poruka sa greskom

exit

 

:nesto

naredba za kopiranje ili nesto

exit

 

*fali ti :

**Poruku mozes i sa VBS-om napraviti tipa napravis 2 datoteke:

prva koja je:

 

poruka.vbs

 

te sadrzi:

 

Dim MyVar
MyVar = MsgBox ("FUCK, sranje", 0, "UPOZORENJE!!!")

 

te druga - tj ovaj tvoj batch (u tvom slucaju):

 

@wscript poruka.vbs

 

 

sa time da moras znati putanju vbs datoteke (negdje :))

Keklja sri 24.8.2022 16:42

Da : sam zaboravio napisati. Ali to nije problem. Kada je H: mapiran radi sve kako treba. Problem je kada ga nema. Odspojio sam racunalo sa mreze i pokrenuo skriptu. Sada bih trebao dobiti prozor na kojemu pise poruka medjutim nista se ne desava. 

U CMD i u Skripti (bez IF naredbe) sam testirao net send * i dobijem prozor sa porukom medjutim IF EXITS h: kada uvijet nije zadovoljen ne funkcionira. Mozda moram napisati i ELSE u novom rediju prije poruke 

mbaksa pet 26.8.2022 00:04

Ako ti ne uspije, možda da probaš s pythonom? Koliko vidim, verzija 2.5 bi trebala raditi na tom računalu.

 

Radio sam s batch datotekama u dalekoj prošlosti, ali sam izbjegavao imalo složenije stvari. Iako nisam nikad radio s pythonom, sad kad vidim opet batch fajlove, smuči mi se pred očima koliko je to loš način skriptiranja. Da sam se našao u tvojoj situaciji, uzeo bih python, izguglao primjere za ono što mi treba (recimo primjer za dobivanje datuma i vremena, primjer za pozivanje vanjskog programa - dakle, neki zip u tvom slučaju, primjer za provjeru postoji li konkretna datoteka), sklepao skripticu i rekao zbogom batchu... Danas se maltretirati s batchom je nehumano. 

mbaksa pet 14.10.2022 03:38

Kolega nije bio na forumu od praktički zadnje poruke u ovoj temi, a meni vrag nije dao mira...

 

Kako bi to izgledalo u Pythonu? Uz provjeru postoji li datoteka, te uz datum i vrijeme za novi fajl?

 

import time, os

os.chdir('d:/test')
source_file = "text.txt"

if os.path.exists(source_file):
  os.system("ren " + source_file + time.strftime(" %d%m%Y%H%M%S") + ".txt")
else:
  os.system("msg * %username% Ne moze se napraviti Backup! Molimo vas da se javite IT osoblju!")

 

Naravno, više smisla imalo bi fajl preimenovati tako da bude godina/mjesec/dan %Y%m%d, ali dobro...

 

I sad kad čovjek ovo pogleda - zašto batch? Batch je odavno trebao nestati s lica zemlje. 

 

 

EDIT:

Samo jedna napomena - isto kao i u C++-u, ako vam u string treba backslash (\) da biste uključili putanju u nardbu koju će izvršiti os.system iliti cmd, unutar navodnika treba backslasheve napisati duplo (jer backslashevi, kao i kod C/C++-a, služe kao escape character), znači ako bi putanja bila d:\test\, naredba bi bila tipa:

os.system("ren " + "d:\\test\\" + source_file + time.strftime(" %d%m%Y%H%M%S") + ".txt")

 

ihush pet 14.10.2022 13:24
mbaksa kaže...

..

I sad kad čovjek ovo pogleda - zašto batch? Batch je odavno trebao nestati s lica zemlje. 

 -odgovor ti je 'zašto ne?' .. tj naravno da je u svakom višem prog.jez. nešto lakše-brže-elegantnije, ''ali'' tad ovisiš o tome (sys-jezik-app...) dok s batchom ne trebaš ništa dodatnog, kao python.. a jednom natipkana skripta se lako editira-održava itd..

-zato jer radi, zato jer to kaže KISS.

-sasvim nešto drugo je što se sve može pa i napraviti neku juzerfriendli frontend app koju će juzer klikati recimo u usporedbi s appsima za renejmanje-konvertiranje mp3 ili slika gdje se i dalje zadržava naziv te opcije-mogućnosti 'batch' ... a ovakva recimo filemanager app ne postoji jer naprosto nikome ne treba, tj onaj kome treba napravi sam za par minuta dok juzeri koji konvertiraju mp3 nisu programeri-admini i sl. kojima je editor-batch-cli nešto rutinsko-lako .. i najvažnije, pri ruci, neovisno o ostatku, radi.

 

edit: može se usporediti s ms-diskpartom u cli-cmd-u i okrljaštenim gui-diskmanagerom koji je samo dio mogućnosti diskparta kao njegov frontend.. može li ms napraviti nešto 'klikabilno? -može..

mbaksa pet 14.10.2022 13:40
ihush kaže...
-odgovor ti je 'zašto ne?' .. tj naravno da je u svakom višem prog.jez. nešto lakše-brže-elegantnije, ''ali'' tad ovisiš o tome (sys-jezik-app...) dok s batchom ne trebaš ništa dodatnog, kao python..

"Trebati" Python danas teško da može biti ikome ikakav izgovor. Jednom ga instaliraš i to je to. Kod Linuxa recimo Python dolazi predinstaliran kod većine distribucija. Moguće je i da je samo pitanje vremena kad će i Windowsi dolaziti s njim. Mislim zapravo da bi i trebali, s obzirom na to koliko je popularan.

 

ihush kaže...
a jednom natipkana skripta se lako editira-održava itd..

Ako samo trebaš promijeniti putanje ili imena fajlova - da. Ako trebaš dodati novu imalo složeniju fukcionalnost ili izmijeniti postojeću - hell no! 

 

ihush kaže...
-zato jer radi, zato jer to kaže KISS.

Vidiš da kod kolege ne radi, tj. nije radilo onako kako je on htio.  A KISS u sebi sadržava "simple" - ovo maltretiranje s vađenjem datuma i vremena je sve samo ne simple. Ako ćemo se voditi time, batch je simple samo u smislu da je interpreter već instaliran u Windowsima (ne i u drugim operacijskim sustavima! koji imaju druge interpretere naredbi), dok definitivno nije simple za korištenje ako ti treba išta povrh nizanja naredbi. S druge strane, Python je relativno simple za izradu logike, a ako je nekome komplicirano instalirati ga, ne znam što bih rekao.

 

Batch je OK ako ćeš samo nizati naredbe, ako ne treba biti u skripti nikakva logika. U suprotnom je živi užas.

 

ihush kaže...
-sasvim nešto drugo je što se sve može pa i napraviti neku juzerfriendli frontend app koju će juzer klikati recimo u usporedbi s appsima za renejmanje-konvertiranje mp3 ili slika gdje se i dalje zadržava naziv te opcije-mogućnosti 'batch' ... a ovakva recimo filemanager app ne postoji jer naprosto nikome ne treba, tj onaj kome treba napravi sam za par minuta dok juzeri koji konvertiraju mp3 nisu programeri-admini i sl. kojima je editor-batch-cli nešto rutinsko-lako .. i najvažnije, pri ruci, neovisno o ostatku, radi.

 

edit: može se usporediti s ms-diskpartom u cli-cmd-u i okrljaštenim gui-diskmanagerom koji je samo dio mogućnosti diskparta kao njegov frontend.. može li ms napraviti nešto 'klikabilno? -može..

Baš i ne kužim što si htio reći ovim točkama...

ihush pet 14.10.2022 15:08

-bze citata, možda će biti nečitko..

 

-1.

ok, može, nisam protiv.. no time se stvara ovisnost-potreba, dodatna karika u lancu, koja se u kissu u pravilu izbacuje ako nije nužna odnosno ako nema više benefita ...

-ovo ne donosi neke takve benefite, tj kad jednom napraviš batch ili app neovisno u čemu, python-exe.. ona radi to što želiš, to je doseg takvih skripti-appsa, ne nešto više, jednostavan task koji se praktički nikad neće promijeniti.

usporedba? .. npr nekad je uz dos-win dolazio ms-basic.. mogao si u njemu napraviti isto, no što kad ga više nema, kad ga ukinu-izbace? što kad se u budućnosit to dogodi pythonu? odgovor je opet napraviš potrebno no imaš vremenski gap, juzera koji ne zna ništa o prapovijesti i dinosaurima (stariji prog jezici i sl.) .. i ekšli slične stvari konstantno rade stariji programeri koji stalno prebacuju nešto prastaro u novo, iz šupljeg u prazno-beskonačno..

-za 1. je zaključak, može 'ali'. .. dok odluku treba donjeti kvalitetan admin koji to može kvalitetno procijeniti dugoročnije itd. i ono što je nama lako juzeru nije.

 

2. .. promjena funkcionalnosti, da. No kad ili koliko često je potrebno? jednom dnevno, godišnje ili u više godina? + najvažnije kao kriterij, zaboravljaš da mi to možemo-znamo i zato nam je to jednostavno-lako, jednako kao što to možeš u pythonu (i ja bi radije u njemu jer i meni je jednako kao i tebi to lakše, u tome se ne razlikujemo), no to ne može juzer-klik-nextaš.. nema nikakvo osnovno znanje, tipka u wordu, sufra, gejma.. njima je to sve kinesko pismo i python im nije lakši čak i da ga imaju na računalu, opet ostaje prednost da za skriptu ne trebaju ni python (karika više)..

-tko mijenja funkcionalnost skripte koja će recimo automatikom u recimo fotostudiju renejmati-kopirati-printati-arhivirati.. ne radi to juzer, to radi onaj tko zna što i zašto radi. Jedino ako mu napravimo neku klikabilnu frontend app to može raditi i tudum-juzer, dok za sad to radi recimo admin. Što je bolje kad je nešto 'važno'? Da nešto radi juzer koji zna samo klik-nextati ili onaj tko zna kako? Nasuprot tog si recimo ti (ili Vi) koji si onako iz hobija-zanimanja napravio stvar u pythonu, no to si ti, da moraš napravio bi u batchu, napravio bi od kutije šibica (ono preživljavanje na pustom otoku kad bear s nožićem napravi lasvegas..) :)

 

-3. .. da, datum je problem povijesti-nasljeđa, od y2k problema dvocifrene godine do standarda-formata-redosljeda yy-mm-dd koji bi bio najbolji za sort umjesto za nas uobičajenog dd-mm-yy ili yyyy .. a naš juzer-početnik dok nešto traži-uči čisto statistički će prije dobiti neko riješenje za usa raspored koje će navoditi mm-dd-yy .. kao stvarno glup-nepotreban problem ako gledamo stvari čisto logički kao vulkanci ili programeri, no problem datuma postoji a mi nismo usa pa ni odgovori koje google da statistički nisu naši..

.. i naravno, kad nešto radiš prvi put, bit će grešaka-bugova-pogrešnih tipfelera ili redosljeda.. tako se uči, tj radije pomognem osobi koja to želi naučiti nego napraviti kliknext app.

-obrnuto, kad nešto takvo želim-trebam, tad napravim .. nekad davno za recimo doom (dos-lan do 4 igrača, u vrijeme kad većina nije znala ništa, pogotovo kako pokrenuti igru) od kompletnog boota-menija za učitati potrebne audio-sb16 drivere, novel-mrežu, miša.. i to u ograničenoj količini 4mb rama pa nije smjelo biti razbacivanja ni kilobayta da bi igra radila, pa sam to napravio kao i frontend za klikanje mrežne igre, ono što je kasnije zamjenio online i gamespy i ls... čak s opcijom različitog učitavanja ms ili genius drivera za miša jer je bila razlika treća-srednja tipka i bindati nešto na nju.

-da vidiš što naprednije skripte mogu, koliko komplexnih operacija počevši od boota i konfiguracije svega, nekad davno popularno upravo iz takvih mrežnih-specifičnih razloga, npr novel-boot i tadašnje ipx mreže kao i ovisnost o driveru za konkretnu mrežnu karticu a danas to sve radi os, nema ograničenja, .. no i danas možeš bootati takvu fdd koja radi kao što je radila prije 10-20-30 god.. jedino što više nema ffd-a :)

 

2+3 .. kad zatrebam neku takvu skriptu, za recimo arhiviranje-backup, sjednem-napravim. To tad radi vječno-nepoderivo, ne ovisi o postojanju pythona ili evoluciji koja te svaki 'čas' (relativno-vrijeme par godina) natjera na upgrade-novo i maltretira recimo kompatibilnostima-verzijama i sl.

 

4. .. točkice? može li ms napraviti neku klikabilnu frontend app za diskmanager? kao što postoje ostali disk-part manageri? -može (i točkice služe tome da postoji nastavak, ali neće...) jer nema potrebe, ne želi, jer to nije stvar koju juzer treba tj treba jednom u životu računala (install osa, kad se kao korak prije inicijalizira disk, kreira particija, boot itd..).

-koliko nam svima nedostaju naprednije opcije u diskmanageru? .. lakše bi bilo svima, pa i meni, klikati, pa i ja tad koristim treće app kao microtool, easeus i sl. ili gparted ili što već, no sve to može i diskpart a pošto to nije nešto što prosječan juzer radi često tad .. ms to ne želi, znanje-mogućnost ima, da žele napravili bi. S druge strane, kao admin, ja sam tim stanjem zadovoljniji jer juzer ne može nekim alatom napraviti veću štetu ako tog alata nema, opet eliminacija kissom, eliminira se mogućnost da juzer iz znatiželje klika važne sys stvari i napravi problem, tj ako to radimo ja-ti, ako stvorimo problem opet ćemo ga i riješiti, dok je juzer tad bespomoćan i tad je bolje da takav alat tj mogućnost ni nema. Onaj tko zna, taj zna i kako, ima alat itd. Iz istog razloga postoje razni ključevi-matice, postoji običan šarafciger kojeg može svaki juzer šarafljati, postoje torx, razni, namjerno, koje možeš samo odgovarajućim ključem-alatom, tj time si eliminirao juzere pristupu-šteti iz neznanja..

 

-razlika, 1-4, suma, osoba koja zna i ona druga, juzer. Onaj tko zna, napravit će, onaj tko ne zna ne treba to raditi, ne treba mu olakšati nešto što neće nikad ni raditi, naučiti, razumjeti, u najboljem slučaju će jednom kliknuti .. tj koliko juzera koje ne zanima konkretno tema čita ove postove? e upravo takav odnos-omjer je odgovor treba li im napraviti neki frontend ili može li to biti u pythonu. Onaj tko zna-uči-razumije, može u assembleru, može u c++, može u bilo čemu, pa kad postoji izbor tad i ja biram ono što mi je lakše ili gotovo.

 

-scenarij, recimo da sad napravimo win-exe-app za renejmanje fileova u nekoliko formata, recimo po datumu kao formatu-maski za naziv filea, %YYYY-MM-DD_Nešto_brojčanik0000% .. gdje će juzer umjesto 'Nešto' utipkati riječ, ili u brojčaniku recimo raspon ili početni broj.. to je app koju napraviš za desetak minuta. Koliko juzera će je koristiti i koliko često? 99% ako skine tu app pokrenut će je jendom i nikad više.

-osnovne mogućnosti već nude napredniji filemanageri, kao što ručno juzer može bilo što renejmati, .. tj skripta ili odgovarajuća app je tad potrebna samo adminu-backuperu, osobi koja to radi stalno, svakodnevno, rutinski a to tad jednom napravljena skripta ili app rade, tj rezultat u oba slučaja je jednak a razlika je samo u tome što kao početni kriterij točno kažeš da je to sve lakše napraviti u pythonu nego u čistoj batch skripti zbog ograničenja jezika, no tu prvu stepenicu težine si već prešao, dok običan juzer ni ne želi na tu stepenicu u tom smjeru.

-admin programer koji to treba, ako ništa drugo, napravit će neki dll-modul, u kojem će se prosljeđeni parametar pretvoriti u željeni format i vratiti kao rezultat, tj kao što svaki programski jezik kao c ima libove i kao što ih možeš koristiti i na nivou osa, pozvati iz treće app itd., pa do tog da možeš u neku korisničku app ugraditi-dodati upravo takvu mogućnost da npr juzer u wordu ili photoshopu kad sejva neki dokument (doc-pic... što već radi) ne brljavi i ne brine o naslovu nego ga ti progreamski riješiš, kao što to defaultno word već radi i prve riječi u dokumentu će biti ponuđene kao naslov, tj možeš i to programski presresti i ponuditi takav odgovarajući naslov te eliminirati potrebu da to naknadno radi skripta, no opet čemu.. jer tad bi morao to raditi po svim računalima s wordom a ako radiš naknadno tad je nepotrebno-duplo tj moguće da bi tad prošlo više pogrešaka jer juzer može svašta itd.. jednostavnije-sigurnije je pustiti juzera da lupi pogrešan naslov i ti ćeš ga popraviti prije arhiviranja takvom skriptom (ili python-appsom-exeom-nečim-alatom) tj tad neovisno o tome da je juzer dobro nešto napravio sustav radi nepogriješivo, kao svaki calculator.

 

-dodatak.. kao calculator, nije nam teško-lako računati recimo korjene brojeva kad to radi calculator, a pošto smo na računalu tad nam je to jednako teško-lako i zato to ne moramo izbjegavati dok na papiru-olovkom moraš napraviti nešto jednostavnije, tj nešto što se može lakše-brže pa i točnije-preciznije bez grešaka-tipfelera i sl. računati, tj tad ne koristiš formule s logaritmima nego množenje-zbrajanje, niže operacije.. kad s bagerom kopamo može i par tona u jednom zamahu, kad kopap lopatom moraš po malo, mali chunk koji osoba fizički može svladati, obaviti, mada je teoretski sve to isto, nije isto 1kg ili 1t ..

-kao pomiriti suprotne-paradoxe npr jednostavan task za prosječnog juzera i posao koji obavlja specijalista u bilo čemu, kuhanju, nogometu, matematici, programiranju, pa i računala-arhive-fileovi.. odgovor za mene-tebe ne mora biti isti čak kad koristimo ista logička pravila, jer se potrebe ili resursi razlikuju. Razlika, ti kad poželiš možeš čak napravit python app koja riješava ovo pitanje datuma-tema, dok juzer ne može čak ni pretipkati text u editoru na odgovarajućem mjestu u skripti kako bi recimo primijenio usa mm-dd-yy u naš format dd-mm-yy ili poželjniji yyyy-mm-dd.

 

-ponovo kao (hipotetsko) pitanje, kome će takva app-skripta-nešto što napraviš recimo u pythonu služiti? meni-tebi? .. mi možemo napraviti kao što si i sam napravio jer ti 'vrag nije dao mira' :) .. a oni koji to ne mogu, njima je svejedno, tj može biti skripta, može python, može kineski-kanđi-klingonski jezik, njima je ok samo ako je klik-next i trebat će možda jednom a tad se po kissu ne radi recimo app nego se radi ručno 'na žganjce' .. i to tad radi onaj tko zna, ne juzer s klik-nextanjem a njemu bi takva pytonapp bila od pomoći, kao i meni-tebi jer i nama je lakše kliknuti mišem nego natipkati neki kod u cmd-u bez tipfelera ili točnog patha i naziva filea source-targeta. Dodatno, u tome si u pravu, obojici će i to biti od koristi, jer jednom napravljena app eliminira ljudsku grešku recimo unosom (pahta-naziva u slučaju renejmanja) i to je osnovni razlog zašto se sve radi osim ponavljanja-masovnosit, tj jednom napravljena app je nepogriješiva, dok mi kao ljudi ipak povremeno pogriješimo neovisno o znanju i takva frontend app nas recimo spašava takvih grešaka kao što to rade i winzip umjesto cmd-a za zipiranje. No to je razlika, tj svi koriste winzip.. renejmanje filea u formatu datuma ne koriste svi.. kao i ostale razlike-potrebe koje tad mora onaj tko to zna, tko zna što i kako radi, ne juzer-next-klikanjem.

 

-možemo li klinca naučiti voziti auto? možemo, tj to rade u autoškoli, no kad klinac dobije auto time je postao i potencijalna opasnost na cesti, jednako je s alatima i juzerima + ovo ne treba 99% juzera nego uža-specifična grupa a ta grupa tad moraju biti napredniji i tad im je irelevantno u batchu ili pythonu, win-lin-mac-ostali, računalo-mob-..

 

-ali i da, ako se bilo što radi, danas to treba raditi u pythonu, kao što se nekad radilo u ms-batcu od vremena dos-a i točno, python je danas dostupan svugdje, no ipak nije za svakog, kao što to nije ni vožna autom prije vozačke a to je ona razlika između juzera i naprednog na konkretnom poslu npr admina. Takav admin će sam riješiti problem no gotova skripta će mu olakšati ili će to biti način kako se uči a ako koristi nešto u poslovne svrhe tad recimo da mora brinuti i o autorskim pravima, pa ako ti kao mbaska napraviš neku skriptu-app-nešto, dok ne daš uz to odgovarajuću licencu on ne smije (ako ćemo biti do kraja pošetni po pravilima) koristiti, tj ako ikad kreneš u takvom smjeru da urbietorbi nekom daš skriptu i sl. moraš mu dati i pravo-licencu tj bez tog u komercijali ne smije koristiti ili jednog dana dođeš i tražiš novac... baci pogled na bilo koju ms-skriptu, u svakoj u headreu imaš ms-tm-copyright i juzer može koristiti no ne i komercijala ako nema dozvolu dok znamo da možemo copypasteati bez tog texta, no i dalje je to njihova skripta, koju će neki compare potvrditi kao identičnim fileom i time dokaz da je to neovlaštena kopija tj kršenje zakona jer oni nisu dozvolili izmjenu itd. imaš tako i 7z licencu, koja konkretno navodi što možeš i što moraš.. dozvole sve-svašta ali moraš i dalje navesti autora kao i ogradu za rar ako ga koristiš itd.. što ako nekome dobronamjerno daš takvu skriptu? Zato radije adminu ili učeniku koji uči i možda postane admin, pomognem u tome kako naučiti i napraviti posao, ne čime, nego cilj, da radi a pri tome je batch ili python samo pitanje raspoloživih resursa i tek kad stvarno mogu birati izabrat ću lakše, jer i meni je lakše u pythonu, kao što mi je lakše calculatorom računati korjene :) no važno je znati-naučiti kako se to radi, ne dobiti klik-next...

Djuro von Prekoplotovich pet 14.10.2022 21:47
mbaksa kaže...

Kolega nije bio na forumu od praktički zadnje poruke u ovoj temi, a meni vrag nije dao mira...

 

Kako bi to izgledalo u Pythonu? Uz provjeru postoji li datoteka, te uz datum i vrijeme za novi fajl?

 

import time, os

os.chdir('d:/test')
source_file = "text.txt"

if os.path.exists(source_file):
  os.system("ren " + source_file + time.strftime(" %d%m%Y%H%M%S") + ".txt")
else:
  os.system("msg * %username% Ne moze se napraviti Backup! Molimo vas da se javite IT osoblju!")

 

Naravno, više smisla imalo bi fajl preimenovati tako da bude godina/mjesec/dan %Y%m%d, ali dobro...

 

I sad kad čovjek ovo pogleda - zašto batch? Batch je odavno trebao nestati s lica zemlje. 

 

 

EDIT:

Samo jedna napomena - isto kao i u C++-u, ako vam u string treba backslash (\) da biste uključili putanju u nardbu koju će izvršiti os.system iliti cmd, unutar navodnika treba backslasheve napisati duplo (jer backslashevi, kao i kod C/C++-a, služe kao escape character), znači ako bi putanja bila d:\test\, naredba bi bila tipa:

os.system("ren " + "d:\\test\\" + source_file + time.strftime(" %d%m%Y%H%M%S") + ".txt")

 

 

Na kućnim računalima, samo naprijed.

U profesionalnim okruženjima, onaj tko održava mašinu ima zadnju riječ o tome što se smije a što ne instalirati.

 

Ako mogu biti siguran u jednu stvar, čak i na korporativnim računalima, to je da će cmd interpreter biti dostupan.

I mogu računati na to da će neke skripte napisane i prije 10 godina raditi.

Pošto radim u okruženju gdje je IT razuman, u zadnje vrijeme mogu računati na to i da će PowerShell biti dostupan.

 

Kod Pythona mogu računati na to da će svakih 5-7 godina biti neodlučni bi li piškili ili kakili i napraviti cirkus kao sa verzijom 3.

Isto važi i za Perl.

Drugi problem je što početnici krenu koristiti pip/cpan čak i za jednostavne stvari.

Nakon kopipejstanja sa StackOverflow ili ServerFault, rezultat je sigurnosni problem.

 

Svaki iole bolji admin trebao bi biti u stanju razumjeti ili editirati cmd/Powershell/shell skripte.

Isto se ne može reći za Python skripte.