web-dev-qa-db-ja.com

bashシェルスクリプトを.batファイルに変換するにはどうすればよいですか?

私のMacにはbashシェルスクリプトがあり、PCを使用しているユーザー向けに.batファイルに変換する必要があります(少なくとも、これは私が聞いたことです)。私はこれについて行く最善の方法、または誰かが良い参考文献を知っているかどうか疑問に思っていました。私に正しい方向に向けるために正しい質問をグーグルに尋ねているようではない。

具体的には、どうすればよいですか...

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

15
LOlliffe

実際、Windowsのバッチファイルに移植するのは簡単です。あなたは確かにすべてのUnixツールのWindowsポートを使用できます(またはエミュレーションレイヤーを使用してさらに楽しい)ことができますが、これは難しくありません。

  1. ユーザーのホームフォルダの場合は〜

    ユーザーのプロファイルは環境変数%USERPROFILE%にあるため、次のようにする必要があります。

    cd %USERPROFILE%\Documents\DropFolder
    
  2. 一連のファイルを反復処理する

    forコマンドはここで役立ちます:

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

    もちろん、JARファイルへのパスを調整する必要があります。

    また、forにはこれ以外にも多くの用途があるため、help forもご覧ください。

  3. ベース名

    次の構文はループ変数またはパラメーターに固有であるため、これはサブルーチンまたはforループで行う必要があります。そのままでは環境変数では機能しません。 %%~niを使用すると、basenameが何を提供しているかを取得できます。ここで、%%iはループ変数の場合、%~n1%1がサブルーチンまたはバッチの引数の場合あなたが持っているファイル。したがって、以下はおそらく同じことを行います。

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

    forのヘルプには、最後の方にあるそれらの詳細情報があります。

14
Joey

Windowsシェルは、bashシェルとは異なるスクリプト言語です。移植する必要があります。または、cygwinやmingwなどを使用して、Windowsでbashシェルを実行することもできます。

4
Maz

また、Bash Shellが既に組み込まれているGit for Windows(GitBash)を使用することもできます。

4
scottyp

WindowsのF1ヘルプは、DOSスタイルのバッチファイルを作成するときに驚くほど役立ちます。 WindowsデスクトップからF1を押し、バッチを検索します。バッチパラメータを使用するためのリンクは、DOSで奇妙なトリックを行うのに非常に役立ちます。 「バッチファイルの使用」ページも非常に便利です。他のポスターが述べているように、実装言語としてバッチを避けた方がいいですが、必要であれば、そうする必要があります。

1
tonyj

手動で変換する必要があります。バッチコマンドを学び、同等のことを行います。または、 GNU win32 unix ツールを使用することもできます。

1
ghostdog74

Powershellを見てください。このサイトには多くの例があります:

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

0
buckbova