Что такое Windows-эквивалент сценария оболочки UNIX? - PullRequest
14 голосов
/ 18 ноября 2008

Я хочу иметь исполняемый файл, который будет вызывать некоторые другие программы. Я бы сделал это в Linux с помощью простого скрипта bash, который выглядит следующим образом:

#!/bin/bash
echo "running some-program"
/home/murat/some-program arg1 arg2

Какой лучший способ сделать это под Windows?

Ответы [ 15 ]

24 голосов
/ 18 ноября 2008

Взгляните на PowerShell , который ближе всего подходит к настоящему языку сценариев, как у вас в Unix. Кроме этого, для простых вещей, таких как просто запуск приложения, взгляните на командный скрипт Windows / командные файлы MS-DOS.

14 голосов
/ 18 ноября 2008

Вы можете использовать либо пакетный файл старой школы (http://en.wikipedia.org/wiki/Batch_file)), либо использовать совершенно новый блестящий скрипт Windows PowerShell (http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx).

Я использую пакет для простых операций и PowerShell для сложных сценариев, которые также включают обработку данных.

10 голосов
/ 18 ноября 2008

Существует несколько вариантов сценариев в Windows:

  • Пакетные файлы
  • VBScript / CScript / JScript (очень мощный в сочетании с WMI)
  • PowerShell
  • Вы можете установить Perl, Python или другой движок
  • Вы можете установить инструменты Unix, например, через Cygwin, чтобы сделать большинство стандартных команд Unix доступными и в Windows.
  • Поскольку мы все (в основном?) Здесь программисты, ничто не мешает вам создать файл .exe, чтобы делать то, что вы хотите.
7 голосов
/ 18 ноября 2008

Вы можете использовать пакетный файл Windows. Более подробную информацию можно найти в статье Википедии .

6 голосов
/ 18 ноября 2008

Семейство операционных систем Windows NT (NT 3.51, NT 4.0, 2000, XP, Vista) имеет достаточно мощную командную оболочку, даже если она немного эзотерична. Эта оболочка не обладает мощью типичных оболочек UNIX, однако она распространена на компьютерах с Windows и удивительно, чего можно достичь. Отличная книга для этого - Windows NT Shell Scripting Тимоти Хилла. Я всегда находил Страницы сценариев Роба ван дер Вуде отличным ресурсом для пакетных файлов.

PowerShell - это последнее предложение Microsoft в этой области, которое выводит сценарии на совершенно новый уровень и предоставляет вам доступ ко всем возможностям .NET Framework, а также WMI, COM и любого другого интерфейса в Windows. Это довольно крутая кривая обучения, но это определенно верный путь, и я думаю, что у него есть потенциал стать одним из тех фундаментальных технологических навыков (таких как RegEx, XPath и т. Д.) В мире Microsoft. Хорошей отправной точкой является Технологический центр Microsoft Windows PowerShell , но для этого существует огромное количество ресурсов.

6 голосов
/ 18 ноября 2008

Пока мы предлагаем * инструменты командной строки nix, я бы рекомендовал проверить Cygwin (http://www.cygwin.com), поскольку он эмулирует * nix-подобную среду.

5 голосов
/ 18 ноября 2008

Раньше я использовал командные файлы. И для простых примеров, которые вы привели выше, я все еще это делаю, но все больше и больше я использую python для подобных вещей. Он имеет дополнительное преимущество работы на разных платформах для тех редких скриптов, которые действительно имеют смысл на разных платформах.

Python - это лишь один из многих языков сценариев, которые вы можете использовать для такого рода вещей. Perl, Ruby или PHP может быть больше вашей скорости. Я считаю, что язык сценариев дает мне более богатый и легкий для понимания синтаксис, если я хочу сделать что-то более сложное, чем просто запустить программу с несколькими аргументами по умолчанию.

3 голосов
/ 22 сентября 2009

В качестве альтернативы слабой командной строке Windows, не очень удобному для Windows Cygwin или изворотливому и медленному Powershell, вы можете рассмотреть оболочку Hamilton C . Я - автор, так что, конечно, я, возможно, предвзят, но я реальный человек, и меня волнует стремление сделать моих клиентов счастливыми. Оболочка Hamilton C - это полное воссоздание оболочки и утилит UNIX C, но все это с нуля для Windows и, как таковое, разработано в соответствии с соглашениями Windows для имен файлов и так далее. Этим летом я выпустил новую версию для Vista, которая включает в себя как 32-битные, так и 64-битные сборки. (64-разрядная версия примерно в 2–3 раза быстрее, чем 32-разрядная.) Есть бесплатная демоверсия, которую вы можете попробовать, прежде чем купить.

3 голосов
/ 18 ноября 2008

Обновление : Вау, это ужасно устарело (хотя это неизбежно). Powershell определенно становится все более и более популярным языком для автоматизации в Windows. Он обладает многими преимуществами любого языка .net (например, C #) в сочетании со значительной целесообразностью, существующей в любом хорошем языке оболочки, без серьезных недостатков пакетных файлов.

Что стоит, самые популярные варианты, которые я видел в одной крупной компании по разработке программного обеспечения на базе Редмонда (в грубом порядке популярности):

  • Пакетные файлы
  • Perl
  • Windows Scripting Host (Javascript)
  • Крошечные бывшие

Гораздо менее популярный:

  • Powershell

Обратите внимание, что Perl не требует установки, ему требуется только несколько обновлений переменных среды, поэтому просто вставить весь дистрибутив в систему управления версиями вместе с другими инструментами.

Мое личное предпочтение состояло бы в том, чтобы как можно больше избегать пакетных файлов, даже при самых тщательных и строгих процессах выигрыш в стоимости просто не стоит. У вас никогда не будет удовлетворительного решения, если вы используете партию. Perl и Javascript заманчивы в использовании, но есть серьезные проблемные недостатки, которые оставляют желать лучшего, без строгих рекомендаций по разработке эти методы, скорее всего, приведут к низкому качеству кода.

Python и Powershell - хорошие кандидаты, но я недостаточно разбираюсь в них, и, что более важно, многие люди не настолько знакомы с ними. Возможно, это не достаточно хорошее оправдание. Крошечные exe-файлы также могут иметь много проблем и требуют дисциплины и процесса, чтобы гарантировать, что источник всегда проверяется, что exe-файлы соответствуют определенным нормам пользовательского интерфейса (например, они имеют полезную помощь, если вы запускаете -? Или /?), Что у них есть очевидный владелец, что процесс обновления exes обнаружим и т. д.

3 голосов
/ 18 ноября 2008

командные файлы работают на меня. Просто удалите первую строку в вашем примере, и она должна работать так же в строке win32 cmd.

note - создайте текстовый файл, назовите его с расширением .bat и используйте обратную косую черту вместо прямой косой черты.

...