line count
Jan. 7th, 2004 05:40 pmконечно, на любом нормальном языке я написал бы это минут за 15. но это как бы неспортивно, Шойхер бы не одобрил. поэтому за час мучений я таки сваял cmd-шник. вот, кому интересно:
@echo off
echo Calculating...
echo 0 > tmpfile
for %%i in (%1) do wc -l %%i >> tmpfile
set /a a = 0
for /f "Tokens=1" %%i in (tmpfile) do set /a a = a + %%i
del tmpfile
echo %a%
в %1, понятное дело, кладётся маска.
wc - из UnxUtils.
(no subject)
Date: 2004-01-08 12:25 am (UTC)Кстати, если уж бороться за идейную чистоту, то есть за неиспользование чужеродных тулзов, то, наверное, можно было посчитать кол-во строк одним только for -- так бы дело и без временных файлов обошлось :) Впрочем, без временных файлов и так можно было, в винюках, оказывается, тоже обратные кавычки уже изобрели. Да, чего только не узнаешь, help почитав..
(no subject)
Date: 2004-01-08 05:54 am (UTC)а подсчёт количества строк одним только for - есть прямо в майкрософтовских примерах по поводу этого for. только это будет сэм-восэм лишних строк вместо одной.
а что за обратные кавычки?
(no subject)
Date: 2004-01-08 06:45 am (UTC)for /f "usebackq tokens=1" %j in (`"for %i in (%1) do wc -l %i"`) do set /a a=a+%j
(your number of percents may vary ;))
Вообще феерические уебки. Вместо того, чтобы встроить нормальные backquotes и arithmetic expansions в сам командный процессор, они устраиваяют коммунизм на уровне отдельно взятой команды. Да еще с совершенно невменяемым синтаксисом. А решение без wc у меня получилось только если не считать пустые строчки. Но тоже в одну строчку:
for /f "usebackq tokens=*" %j in (`"for %i in (*.h) do type %i"`) do @set /a a=a+1
(тормозит правда нещадно, видать, реализация кривая)
А вообще, хватит занимяться фигней. Ты точно проверил, твой wc не пишет total если ему сказать wc -l *, или, к примеру
find . -type f | xargs wc -l? И еще, давно уже пора поставить себе cygwin и убить день на подробное изучение юниксовых тулзов. Поверь, тебе это потом очень много времени сэкономит.(no subject)
Date: 2004-01-08 07:54 am (UTC)но даже если нет - Perl не подходит, его надо инсталлировать. shell - это что такое? у меня шелл - cmd, разве нет? a awk - это да, пошёл изучать. у тебя под рукой нету линка на грамотный туториал по авку?
но: это я только от нечего делать. ибо я хоть и разделяю точку зрения, что лучше день потерять, а потом за час долететь, но задачи, требующие скриптования, возникают у меня крайне редко (когда был предыдущий раз? полгода назад?). вот стану начальником, тогда другое дело :-)
(no subject)
Date: 2004-01-08 08:25 am (UTC)(no subject)
Date: 2004-01-08 08:29 am (UTC)