www.elektronik.si
Bat datoteka
Pojdi na stran 1, 2, 3  Naslednja  :||:
www.elektronik.si -> MS Windows razprave

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Tor Maj 20, 2008 11:26 am    Naslov sporočila:  Bat datoteka
----------------------------------------------------------------------------
Pozdravljeni

Imam problemček ki ga ne uspem razrešiti. Imam več datotek, ki imajo v imenih datume npr. 200508tor.txt, 210508sre.txt........ V datoteko *.bat bi rad vključil zadevo da bi mi primerjala ime datoteke z dejanskim datumom na računalniku. V kolikor bi se datuma ujemala bi se ta datoteko prenesla v neko drugo mapo na računalniku. Ne uspe mi pa napisati pravilno ukaze. Če kaj pomaga (zaradi lažjega zapisa if stavka se lahko spremeni oblika zapisa datuma v imenu txt datoteke).

nekaj takega:

echo off
if 200508.txt=date/t (če je datum v txt datoteki enak dejanskemu datumu potem...)
copy......

hvala
lp

Avtor: tonicKraj: Loče PrispevekObjavljeno: Tor Maj 20, 2008 12:02 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Verjetno ne uporabljaš pravega formata datuma in zato posledično primerjava pade...

mogoče tule najdeš kakšen pameten trik http://www.batchfiles.co.nr/

Probaj si po delih sestavit ime iz datuma (LLMMDD...)...

Avtor: alyKraj: Kranj - struževo PrispevekObjavljeno: Tor Maj 20, 2008 1:59 pm    Naslov sporočila:  
----------------------------------------------------------------------------
uf, ne vem če boš lahko ta problem rešil samo z uporabo IF va .BAT datoteki.
Predvsem ne moreš iskati med obstoječimi datotekami.

Lahko pa narediš samo primerjavo datumov in potem šele kopiraš datoteko. To bi pa verjatno šlo.
Samo spet ne moreš kar uporabiti stringa "date /t", ampak moraš nekako pridobiti string, ki ti ga ta ukaz sicer izpiše na zaslon .. mnogo dela. Rolling Eyes

Avtor: jurKraj: [color=zelena]Ljubljana[/color] PrispevekObjavljeno: Tor Maj 20, 2008 2:43 pm    Naslov sporočila:  
----------------------------------------------------------------------------
V DOS (cmd, command) napišeš: help if

Pokaže se nakaj ukazov, ki bi jih z nekaj triki lahko uporabil.
...if exist 200508.txt izvedi_nekaj,
...omogočene so primerjave (EQU, NEQ,...)
... date/t > a.txt

Najlažje bi bilo napisati program (pascal, C,...) , ki bi delal to kar želiš.

Jur

Avtor: Sokrat PrispevekObjavljeno: Tor Maj 20, 2008 2:58 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Popolnoma napacen pristop k problemu, ce je zgornji opis pravi. Imas mnozico datotek, od katerih zelis le tisto, ki ima ime enako danasnjemu datumu prekopirati nekam drugam.

Koda:
@echo off
date /t > temp.txt
set /p ime = < temp.txt
copy %ime%.txt q:\ciljni\direktorij\nekje
set ime =


Nekaj v tem stilu, dopolni, da bo delovalno pravilno.

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Tor Maj 20, 2008 10:35 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Točno to želim kar je napisal Sokrat, vendar mi zadeva še vedno ne deluje. Imam slovenski izpis datuma npr. tor 20.05.2008, tako da bom pač vse datoteke poimenoval na ta način. Koda je sledeča:

Koda:
@echo off
date/t > temp.txt
set/p ime =< temp.txt
copy %ime%.txt c:\test
set ime = tor 20.05.2008


Naredi mi datoteko temp.txt, v kateri je vpisan datum, potem mi pa javi napako:
The system cannot find the file specified
Pa še to. A mi ne bo na ta način poiskal samo datoteko, ki je vpisana v vrstici set ime = ....

lp

Avtor: Sokrat PrispevekObjavljeno: Tor Maj 20, 2008 11:21 pm    Naslov sporočila:  
----------------------------------------------------------------------------
rimci je napisal/a:
Naredi mi datoteko temp.txt, v kateri je vpisan datum, potem mi pa javi napako:
The system cannot find the file specified


Iz mojega primera je izginil en presledek, ki je bil tam z dolocenim namenom (da bi stvar delovala). Omenjeno vrstico sem prej tudi preizkusil, preden sem jo napisal v svoj odgovor.

Izmalicil si tudi vrstico, ki pobrise zacasno spremenljivko, da ne trati po nepotrebnem prostora.

Jaz sem v mojem primeru pozabil dodati se vrstico, ki pobrise zacasno datotetko (spet potrata prostora).

Citiram:
Pa še to. A mi ne bo na ta način poiskal samo datoteko, ki je vpisana v vrstici set ime = ....


Ta stvar ne bo iskala cisto nic, ampak bo skopirala datoteko z imenom danasnjega datuma in sufiksom .txt v ciljni direktorij, ostale pa bo pustila pri miru, kakor si zahteval v prvem sporocilu.

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Sre Maj 21, 2008 11:22 am    Naslov sporočila:  
----------------------------------------------------------------------------
Sokrat se opravičujem zaradi moje površnosti. Koda zapisa je sedaj taka:

Koda:
echo
date /t > temp.txt
set /p ime = < temp.txt
copy %ime%.txt c:\test
set ime =
pause


Še vedno pa imam isto napako: The system cannot find the file specified (priložen izpis-slika).
Če prav razumem je problem, da mi iz datoteke temp.txt, v katero se v začetku vpiše tekoči datum, ne prebrere tega datuma v obliki stringa iz te datoteke (kar je zapisano v tretji vrstici kode). A sem ga še kje polomil?

lp

Avtor: Sokrat PrispevekObjavljeno: Sre Maj 21, 2008 3:20 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Iz meni neznanega razloga Windowsom ni vsec se en presledek v komandi (ne zna zbrati skupaj presledkov v enega samega) Rolling Eyes Desetletja razvoja so bila ocitno porabljena za druge stvari.

Izbrisi torej presledek v vrsticah, ki se zacneta s set, ki pride pred enacaj (=) - v drugi vrstici imas to celo narejeno, kar pomeni, da se spremenljivka nikoli ne pobrise.

Potreboval bos tudi nekaj zongliranja z imeni, ker si se zapicil ravno v date /t, ki da od sebe niz s presledkom vmes. Spremenljivko torej ogradi z narekovaji.

Meni recimo tole deluje pravilno (imam narejeno datoteko z imenom "sre 21.05.2008 " za testiranje, ker je to pac danasnji dan):

Koda:

@echo off
date /t > tmp.txt
set /p ime= < tmp.txt
copy "%ime%" destinacija
set ime=
del tmp.txt


Omenjeno datoteko mi prekopira v "destinacijo" brez pripomb in pocisti za sabo vse, kar napacka. Ce bi bil kaksen drug dan, bi prekopiral datotetko z imenom tistega dne. Ce je ne bi bilo, je ne bi prekopiral, ampak bi izpljunil napako, ki jo je mogoce preusmeriti v NUL ...

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Sre Maj 21, 2008 8:58 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala Sokrat. Na ta način pa zadeva deluje. Res je potrebno žongliranje z imeni, vendar trenutno mi ne pade boljša ideja.

Sokrat je napisal/a:
Ce je ne bi bilo, je ne bi prekopiral, ampak bi izpljunil napako, ki jo je mogoce preusmeriti v NUL ...


Kam bi jo lahko preusmeril? Tega ne razumem.


lp


Nazadnje urejal/a rimci Čet Maj 22, 2008 10:18 am; skupaj popravljeno 1 krat

Avtor: HighlagKraj: Črnuče PrispevekObjavljeno: Sre Maj 21, 2008 9:59 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Null je en tak kraj recimo digitalna nebesa. Kr pošlješ v null izgine.
Pomeni, da če ukaz ob napaki sporoči in ustavi proces lahko output ukaza preusmeriš v null in napake, ki bi prekinjala proces ni več.

Preusmeritev je v bistvu tole: >Null
ALi pa >c:\preusmeritev.txt ,
ki preusmeri izhod v datoteko preusmeritev.txt na C: disku...

Avtor: Sokrat PrispevekObjavljeno: Čet Maj 22, 2008 10:41 am    Naslov sporočila:  
----------------------------------------------------------------------------
Ja, ampak v DOSu/Windowsih se imenuje kar NUL (z enim L-jem) in ne NULL odkar pomnim.

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Čet Maj 22, 2008 10:54 am    Naslov sporočila:  
----------------------------------------------------------------------------
Najlepša hvala. Res nisem programer in še marsičesa se bo treba naučiti. Imam pa še eno prošnjo. A lahko kdo napiše primer za sledeče:

imam datoteko v kateri je vpisan sledeči string: sre 21.05.2008. Iz tega stringa želim izbrisat prazno mesto in pa pike, tako da dobim sre21052008 in shranit nazaj v datoteko.

lp

Avtor: Sokrat PrispevekObjavljeno: Čet Maj 22, 2008 1:11 pm    Naslov sporočila:  
----------------------------------------------------------------------------
sed obstaja tudi za Windowse :google:

Avtor: rimciKraj: Prekmurje PrispevekObjavljeno: Čet Maj 22, 2008 9:59 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Sokrat je napisal/a:
sed obstaja tudi za Windowse :google:


Lahko razložiš to? Mislim si že ne vem pa če prav mislim.

lp

Stran 1 od 3

Powered by phpBB © 2001,2002 phpBB Group