Stránka 1 z 2

Jak zjistit velikost souboru pomocí *.bat

Napsal: 02 zář 2012 21:53
od zetrozet
Potřebuji zjistit velikost souboru pomocí dávky, v podstatě mi stačí rozlišit soubor nulové velikosti od souborů větších pro rozhodnutí, zda *.zip rozbalovat nebo přeskočit. Jeden takový prázdný ZIP přikládám.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 02 zář 2012 23:36
od Uziv00
V .bat pochybuji. můžeš zkusit Honzu Paška, třeba bude vědět. Jinak předpokládám, že by to šlo ve vbs, pokud máš zájem, můžu zkusit během týdne něco napsat.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 13:52
od zetrozet
V podstatě by mi stačilo zjistit, jestli soubor něco (cokoli) obsahuje. Pokud správně předpokládám soubor velikosti "nula" neobsahuje vůbec nic. Přikládám *.bat, kterým jsem se neúspěšně pokoušel ono "nic" zjišťovat.

Protože mám jeden *.ZIP-soubor s dlouhým (Win) názvem denně, není-li *.ZIP nulový,je v pakovanci soubor s názvem "pomlčka" a chci obsah dostat do databáze obsluhované 16-bitovým interpretem (PC FAND), snažil jsem se každý *.ZIP vypakovat do ASCII souboru s nezaměnitelným DOS-názvem v jednom procesu.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 17:02
od zeus
Tvuj bat nevidim jen ja nebo maji ostatni stejny problem? Klidne ho vloz pomoci code.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 17:29
od zetrozet

Kód: Vybrat vše

::COPYH_BAT
if exist D:\PRIJATE\TOPLIST\PRG\COPYH.txt del D:\PRIJATE\TOPLIST\PRG\COPYH.txt
if not exist D:\PRIJATE\TOPLIST\TOPLIST_2011_9_2.ZIP goto nocopy
copy D:\PRIJATE\TOPLIST\TOPLIST_2011_9_2.ZIP D:\PRIJATE\TOPLIST\TMP\TP110902.ZIP
findstr /R /C:. /G:D:\PRIJATE\TOPLIST\TMP\TP110902.ZIP /M > D:\PRIJATE\TOPLIST\PRG\COPYH.txt
if not exist D:\PRIJATE\TOPLIST\PRG\COPYH.txt goto nounzip
C:\PROGRA~1\IZARC\IZARC.EXE -ef D:\PRIJATE\TOPLIST\TMP\ D:\PRIJATE\TOPLIST\TMP\TP110902.ZIP
move D:\PRIJATE\TOPLIST\TMP\TP110902\- D:\PRIJATE\TOPLIST\TMP\TP110902.TXT > nul
rmdir D:\PRIJATE\TOPLIST\TMP\TP110902
del D:\PRIJATE\TOPLIST\TMP\TP110902.ZIP
:nounzip
move D:\PRIJATE\TOPLIST\TOPLIST_2011_9_2.ZIP D:\PRIJATE\TOPLIST\FIN\TOPLIST_2011_9_2.ZIP
:nocopy
echo D:\PRIJATE\TOPLIST\PRG\COPYH.txt >> D:\PRIJATE\TOPLIST\PRG\COPYH.txt
:end

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 18:14
od zeus
Korektne vytvoreny zip zacina retezcem PK (resp. 50 4b 03 04 14 hexa), testuj jeho pritomnost (staci PK), i kdyz ta tecka (jako regularni vyraz) se zda byt ok.
Ale unika mi podminka

Kód: Vybrat vše

if not exist D:\PRIJATE\TOPLIST\PRG\COPYH.txt goto nounzip
ten txt soubor se VZDY vytvori v predchozim kroku (findstr).

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 18:25
od faraon
Potřebuješ externí příkaz - program, který ti zjistí jestli soubor zadaného jména existuje a má nějakou velikost, nebo je prázdný. Návratovou hodnotu toho programu můžeš testovat příkazem errorlevel a podle toho v dávce skočit na příslušné návěstí, kde se vykoná požadovaná činnost:

Kód: Vybrat vše

@echo off

obsah.exe nic.txt
if errorlevel 1 goto zpracuj
goto konec

:zpracuj
echo PRACUJI

:konec


Můžou nastat čtyři možnosti:
1. Nezadáš název, program vrátí 0.
2. Zadaný soubor neexistuje, program vrátí 0.
3. Soubor existuje, ale nic v něm není, program vrátí 0.
4. Soubor existuje a je v něm aspoň jeden bajt, program vrátí 1.

Program i se zdrojákem a testovací dávkou máš v příloze, je to jen v šestnáctibitovém QBasicu, takže od toho nečekej zázraky, hlavně bacha na názvy souborů, které to umí jen v DOSovém formátu 8.3, takže musíš odzkoušet co ta vykopávka udělá ;-)

A nezapomeň to projet antivirem, sice bych tu v DOSBoxu žádnou verbež mít neměl, ale nikdy si nemůžeš být jistý...

obsah.zip
(29.21 KiB) Staženo 39 x

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 18:52
od zetrozet
Jen doplňující dotaz - DOS-adresáře zvládá nebo je nezbytné umístit "obsah.exe" do adresáře se souborem?

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 19:00
od zeus
Staci kamkoliv do cesty (promena PATH).

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 19:01
od faraon
Musí být v některém z adresářů z proměnné PATH, třeba C:\Windows. Pak ho můžeš spouštět jako každý jiný příkaz odkudkoliv.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 19:18
od zetrozet
Asi jsem se nevyjádřil přesně - šlo mi o to, jestli parametr může obsahovat cestu nebo to musí být "čistý" název souboru. Zdroják je jasný a jednoduchý, ale o to víc závisí fungování na vlastnostech QBasicu.

Re: Jak zjistit velikost souboru pomocí *.bat

Napsal: 03 zář 2012 19:28
od faraon
Ano, můžeš zadat i cestu, jen pozor na to že v DOSu směla mít jen 63 znaky, takže se nedá mockrát vnořovat. Ale hodně zase uberou ty 8.3 názvy: C:\Docume~1\Moje\Pokusy\soubor.txt

Možná by bylo lepší vyrobit to ve Free Pascalu, ten by už dlouhé názvy měl umět.