[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Batch - skanowanie zawartosci katalogu

*

2/18/2007 9:49:00 AM

Witam,

Potrzebuje napisac batch file skanujacy zawartosc katalogu w poszukiwaniu
plikow o okreslonym na stale rozszerzeniu i przekazujacego je po kolei jako
parametr do tego typu komendy: program.exe nazwa_pliku_o_tym_rozszerzeniu |
crc >> sumy.txt
Rozumiem ze trzeba to zrobic for'em, jakas wskazowka :)? No i moze by sie
dalo zrobic tak, aby uniknac przekierowania do pliku, a sumy wyswietlane
byly na konsoli? Jak zrobic by sie nie zamykala od razu po wykonaniu?
5 Answers

Jakub Debski

2/18/2007 12:04:00 PM

0

> przekazujacego je po kolei jako
> parametr do tego typu komendy: program.exe

Pro?ciej u?ya windowsowego "find -exec"
http://sourceforge.net/search/index.php?word...

pozdrawiam
Jakub


*

2/18/2007 2:07:00 PM

0

Dnia Sun, 18 Feb 2007 13:03:33 +0100, Jakub Debski napisaÅ?(a):

> ProÅ?ciej użyÄ? windowsowego "find -exec"

OK, mam wiec:
find -name *.ext -printf %f -exec "program.exe "{}" | crc32" ;
albo tez:
find -name *.ext -printf %f -exec "program.exe {} | crc32" ;

I niestety ale przez uzycie "find -exec" program.exe (ktory wypluwa dane na
stdout) daje wszystko na konsole. Tak jakby "|" nie dzialalo. Chcialbym
jednak unikac tworzenia plikow. Jest na to jakas rada?

*

2/18/2007 2:57:00 PM

0

Dnia Sun, 18 Feb 2007 15:07:25 +0100, * napisaÅ?(a):

> OK, mam wiec:
> find -name *.ext -printf %f -exec "program.exe "{}" | crc32" ;

A wlasciwie:
find -name *.ext -type f -exec "program.exe \"{}\" | crc32" ;
Tyle ze dalej pipe nie dziala. -exec jak rozumiem zamienia {} na nazwe
aktualnego pliku w wykowynawej aktualnie komendzie, nie dodaje nic wiecej?

*

2/18/2007 3:17:00 PM

0

Dnia Sun, 18 Feb 2007 15:57:03 +0100, * napisaÅ?(a):

> find -name *.ext -type f -exec "program.exe \"{}\" | crc32" ;

W ogole uzywalem innego find'a. Ten z SF jak teraz patrze wymaga sporo
bibliotek, no ale dobra, skopiowalem je. Tyle ze gdy uzyje:

find . -name *.flac

to wyskakuje:
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

dziala natomiast dla: *.flc, *.wav
dla *.txt znowu error

Co to ma byc?

Marcin 'Qrczak' Kowalczyk

2/18/2007 3:57:00 PM

0

Dnia 18-02-2007, nie o godzinie 16:17 +0100, * napisal(a):

> find . -name *.flac
>
> to wyskakuje:
> find: paths must precede expression

Uniksowy szel rozwija argumenty z * itp. przed przekazaniem ich
programowi. Zapewne ten find to emuluje (windowsowy cmd.exe nie
interpretuje *, przekazuje argumenty bez zmian). Pomóc powinno:
find . -name "*.flac"
zakladajac, ze ta emulacja uwzglednia traktowanie "" przez szela
jak w Uniksie.

Co do "|" w -exec, to nie dziala, bo -exec nie uruchamia polecenia
za pomoca szela, tylko bezposrednio uruchamia konkretny program
z danymi argumentami. "|" nie jest argumentem programu, tylko jest
interpretowane przez szela. Pod Uniksem mozna zrobic petle na zewnatrz
find, ale nie mam pojecia, jak to sie robi w windoswowym batchu.

--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.p...