Как стать автором
Обновить

Работа с командной строкой в Windows

Время на прочтение 2 мин
Количество просмотров 12K
Время от времени при прочтении статей о программировании или мануалов к каким-нибудь разработкам приходится сталкиваться с необходимостью выполнить код из кодмандной строки, например
php -r 'echo "Hello, world!\n";' или svn checkout asido.googlecode.com/svn/trunk asido-read-only.
Как правило, такие команды выкладывают разработчики, которые работают в линукс или других unix, в которых они могут быть выполнены без каких бы то ни было дополнительных действий. Разработчику, который работает под виндовс для того, чтобы выполнить этот код, приходится его творчески перерабатывать, например указать полный путь к php.exe или создать рабочую копию проекта через привычный GUI, скопировав путь к репозиторию в буфер обмена.

Для того, чтобы такой код работал, на unix-системах, на необходимые исполняемые файлы создаются символьные ссылки и помещаются в директорию (/usr/bin, к примеру), путь к которой добавляется в системную переменную PATH. На виндовсе такой вариант (по моему опыту) неудобен и не работает. Неудобен, потому что во-первых создание символьных ссылок возможно только в NTFS, а во-вторых, утилита для их создания не включена в стандартную поставку виндовса. А не работает потому что после разрешения символьной ссылки текущий путь становится равным пути директории, в которой находится файл, на который указывает ссылка. Еще один вариант — это прописать пути ко всем файлам в PATH, но приведет к его излишнему захламлению и (по меньшей мере, теоретически) к дополнительным тормозам в системе.

Для того, обойти эти проблемы, можно использовать обычные ярлыки. Для всех файлов, которые нужно запускать из командной строки, создаем ярлыки в какой-нибудь папке, находящейся не на системном диске (просто чтобы после переустановки виндовса не приходилось их создавать по-новой). При этом для каждого из ярлыков очищаем поле «Путь запуска», которое автоматически заполняется при создании ярлыка. Иначе, как и в случае с символьными ссылками, путь всегда будет равен директории исполняемого файла.

После этого в переменную PATH нужно добавить путь к директории с ярлыками (у меня это d:\usr\bin), а в переменную PATHEXT добавить расширение LNK — для того, чтобы файлы *.lnk можно было запускать по аналогии с *.exe, *.bat и т.д. без указания расширения. Поскольку эти манипуляции (изменение значения системных переменных) приходится выполнять каждый раз после переустановки виндовса, да и просто можно автоматизировать, я это и сделал. Вот скрипт.

Спасибо maovrn за идею.
Теги:
Хабы:
+17
Комментарии 89
Комментарии Комментарии 89

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн