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

У меня есть bash shell script на моем 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

Ответ 1

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

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

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

    cd %USERPROFILE%\Documents\DropFolder
    
  • Итерирование по набору файлов

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

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

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

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

  • базовое

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 5

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

Ответ 6

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