cmd

 

Страницы: | 1 |

Скрипт для вывода ченджсета со списком изменённых файлов (Mercurial)

26 мая 2011 // Хельги

В дарксе у команды changes есть замечательная опция -s, которая выводит под каждым патчем краткую пофайловую сводку:

[site D:]$ darcs cha --last 1 -s
Fri Mar  4 22:00:52 Russian Standard Time 2011  franoleg@gmail.com
  * #436 notify: Support no-auth SMTP sending

    M ./help/IndianaSettingsHelp.wiki -1 +5
    M ./sendmail.py -7 +16

В меркуриале я такого ничего не нашёл, но по мотивам поста Mercurial: listing files modified in incoming changesets, and guessing conflicts соорудил вот такой батник:

@echo off
if .%1.==.. goto USAGE

hg log -r %1 
hg log -vr %1 | grep "files:" | sed "s,files:,,"| sed "s,\^[ ]\*,,"  | tr " " "\012" | sort | uniq
goto END

:USAGE
echo Usage: %0 REV
echo     Show hg revision info with file list

:END

Разумеется, требуются unxutils.

Тэги: cmd, darcs, hg
Написать комментарий

Как определить, вызван пакетный файл из командной строки или из проводника?

6 февраля 2011 // Хельги

Для некоторых пакетных файлов полезно различать, был ли файл запущен из командной строки или двойным щелчком из проводника (или его аналога). Например, при запуске пакетника, выполняющего функции мейк-файла, из проводника результаты сборки хочется оставить на экране — то есть поставить в конце вызов команды pause. Но если запускать его из консоли, то «пауза» будет совершенно лишней.

Можно заметить, что при вызове из проводника (или, например, из менеджера Total Commander) переменная %0 содержит полный путь к пакетному файлу, заключённый в кавычки. Если же пакетник вызывается из консоли, то, скорее всего, при вызове было указано имя файла (с расширением или без).

Справка по команде call подсказывает нам, что имя вызванного пакетного файла можно получить при помощи выражения %~n0, а имя с расширением — при помощи %~nx0. Сравнив эти выражения с исходным значением %0, можно принять решение о вызове «паузы».

То есть пакетный файл можно закончить следующим фрагментом:

if .%0. == .%~n0. goto END
if .%0. == .%~nx0. goto END

pause
:END

P. S. Если есть вероятность, что пакетник будет запускаться не только из его собственного каталога, т. е. командами вида dir\script, то можно зайти с другой стороны и сравнивать значение %0 с полным путём: %~f0.

Тэги: cmd, советы
Написать комментарий

Страницы: | 1 |