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

у меня есть скрипт оболочки bash на моем Mac, который мне нужно преобразовать в a .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`/

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

6 ответов


на самом деле, вещи, которые вы упоминаете, тривиальны для порта в пакетный файл Windows. В то время как вы, конечно can использовать порты 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 имеет больше информации по этим вещам ближе к концу.


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


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


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


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

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


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