Что эквивалентно Windows оболочке UNIX script?

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

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

В окне есть несколько сценариев:

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

Ответ 4

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

Ответ 5

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

Ответ 6

Семейство операционных систем Windows NT (NT 3.51, NT 4.0, 2000, XP, Vista) имеет достаточно мощную командную оболочку, даже если она немного эзотерична. Эта оболочка не имеет возможности типичных оболочек UNIX, но она повсеместно распространена на машинах Windows, и это довольно удивительно, что может быть достигнуто. Отличная книга для этого Windows NT Shell Scripting от Timothy Hill. Я всегда нашел Rob van der Woude Scripting Pages отличный ресурс для пакетных файлов.

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

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

  • Пакетные файлы
  • Perl
  • Windows Scripting Host (Javascript)
  • Tiny exes

Значительно менее популярны:

  • Powershell

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

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

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

Ответ 10

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

Ответ 11

Как правило, командная строка Windows (DOS) считается довольно обедненной по сравнению с * nix. Вы можете установить что-то вроде Cygwin или PowerShell, если вам нужна мощная командная оболочка, или вы можете причинить себе большую боль и страдания, чтобы попробовать использовать DOS для всех ваших нужд.:)

Ответ 12

WScript.CreateObject( "Scripting.FileSystemObject" );

было моим лучшим оружием win32 в последнее время.

Ответ 13

Я использую комбинацию CScript/JScript. Очень мощный, как только вы изучите доступные системные объекты.

Ответ 14

Вот пример пакетного файла, который я сделал кому-то некоторое время назад.

echo off
echo Backing up Images
%homedrive%\Backup\7z.exe a -tzip photos.zip %userprofile%\Photos\*.jpg %userprofile%\Photos\*.png %userprofile%\Photos\*.gif %userprofile%\Photos\*.bmp
echo Backing up Music
%userprofile%\Backup\7z.exe a -tzip music.zip %userprofile%\Music\*.mp3 %userprofile%\Music\*.wma %userprofile%\Music\*.ogg %userprofile%\Music\*.wav
echo All Done

Обратите внимание, что script ожидает, что программа 7z.exe в папке Backup в папке% homedrive%. Я использовал Envirnment Variables, чтобы упростить работу для разных пользователей.

Ответ 15

В то время как оболочка имеет sh -C ${custom command}.

Попробуйте cmd /C ${custom command}, где ${настраиваемая команда} стоит команда, которую вы хотите выполнить.