it-swarm.com.ru

Как преобразовать скрипт оболочки bash в файл .bat?

У меня есть скрипт bash Shell на моем Mac, который мне нужно преобразовать в файл .bat (по крайней мере, так мне сказали) для пользователей, которые находятся на ПК. Мне было интересно, как лучше всего это сделать, или кто-нибудь знает какие-либо хорошие ссылки. Кажется, я не задаю Google правильный вопрос, чтобы указать мне правильное направление.

В частности, такие вещи, как я бы сделал ...

cd ~/Documents/DropFolder

(... где ~/равно корню домашнего каталога пользователя, независимо от имени пользователя)?

Или при работе с переменными и операторами "do" ...

for i in *.xml
do
  Java -Xss650K -Xms128m -Xmx2048m -jar /Applications...
done

И, наконец, определение и использование базовых имен ...

  cp -p `basename $i .xml`.xml ~/Documents/ReadyForServer/`basename $i .xml`/

Спасибо за любые рекомендации или предложения для других решений . LO

13
LOlliffe

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

  1. ~ для домашней папки пользователя

    Профиль пользователя находится в переменной окружения %USERPROFILE%, поэтому следующее должно сделать это:

    cd %USERPROFILE%\Documents\DropFolder
    
  2. перебор набора файлов

    Команда for полезна здесь:

    for %%i in (*.xml) do -Xss650K -Xms128m -Xmx2048m -jar ... %%i
    

    Очевидно, что вам нужно адаптировать путь к файлу JAR.

    И у for есть много других применений, кроме этого, так что взгляните и на help for.

  3. базовое имя

    Это необходимо сделать либо в подпрограмме, либо в цикле for, поскольку следующий синтаксис специфичен для переменных или параметров цикла. Он не будет работать с переменными среды как есть. Вы можете получить то, что дает basename, используя %%~ni, где %%i, если переменная цикла, или %~n1, если %1, является аргументом для подпрограммы или пакетного файла, который у вас есть. Таким образом, следующее, вероятно, сделает то же самое:

    copy "%%~ni.xml" "%USERPROFILE%\Documents\ReadyForServer\%%~ni\"
    

    В справке по for есть больше информации об этих вещах в конце.

13
Joey

Оболочка Windows - это другой язык сценариев, чем оболочка bash. Вам нужно будет перенести его. Кроме того, вы можете использовать что-то вроде cygwin или mingw для запуска оболочки bash на windows.

4
Maz

Вы также можете использовать Git для Windows, которая уже имеет встроенную оболочку Bash (GitBash)

3
scottyp

Справка F1 по окнам удивительно полезна при написании командных файлов в стиле DOS. На рабочем столе Windows нажмите F1 и выполните поиск пакета. Ссылка для использования параметров пакета очень полезна для выполнения странных трюков с DOS. Страница «Использование пакетных файлов» также довольно хороша. Как отмечают другие авторы, вам лучше избегать использования пакетного языка в качестве языка реализации, но если вы должны, вы должны это сделать.

1
tonyj

Вы должны конвертировать вручную. Изучите пакетные команды, затем сделайте эквивалент. Кроме того, вы можете использовать GNU win32 unix tools. 

1
ghostdog74

Посмотрите на powershell. Этот сайт имеет много примеров:

http://technet.Microsoft.com/en-us/scriptcenter/powershell.aspx

0
buckbova