単一ファイルに格納されたカスタムCMDコマンド


1

私は自分の 'Make'のようなコマンドを作成しようとしています make cleanmake installmake server。これらのコマンドを格納したmake.batファイルを作成しました。

@echo off
 clean:
 rmdir node_modules
 install:
 npm install
 server:
 node index.js

もちろん、この方法は機能しません。Makefileプログラムをインストールしたくないので、CMDの使い方をもっと学ぶことができます。

このようなことをするためにバッチファイルを作成することは可能ですか?それとも、Makefileプログラムをインストールする必要がありますか?


2
「このようなことをするためにバッチファイルを作成することは可能ですか?」はい。しかし、なぜ車輪を再発明するのでしょうか。 makeのインストールの何が問題になっていますか?
DavidPostill

@DavidPostillこの例では、makeを使用してホイールを再発明しないことがおそらく賢明であることに同意しますが、私は若い頃に非常によく似たプロジェクトを行い、ホイールを再発明しました。バッチスクリプト、今日の私にとってはまだ非常に役に立つスキル。それで、利得は何ですか?経験。 :)
LPChip

@DavidPostillこれらのファイルを保存するためにUSBを使用しています。私が自分の「サーバー」をプログラムするためにUSBを使用することになる多くのコンピュータは、ソフトウェアをインストールさせないように制限されたコンピュータ上にあるでしょう。
Akados

回答:


0

はい、簡単にできます。

バッチファイルは、その名前の後に指定されているすべてのパラメータにアクセスできます。最初の9つは%1、%2、%3、%4 ...%9を通してアクセス可能です。そしてあなたはそれからコマンドを使用することができます shift すべてを上にシフトして、パラメーター10以上にアクセスする。

さて、あなたの例では最初のパラメータだけが使われています、しかしあなたは今あなたが実際に他のパラメータも使うことができることを知っています。

次のステップはバッチファイルを飛び回ることです。あなたが使用することができます IF そして GOTO 一緒にコマンド :labels それをするために。

IFステートメントは次のようになります。

IF "%1"=="clean" GOTO clean

あなたはお互いの下にあなたのすべてのあなたのifステートメントを置くことができます。

if文の最後に、有効なパラメータが入力されていないことを通知します。

echo No parameter or an invalid parameter was used.
echo.
echo Please use make with any of the following parameters
echo    clean      - remove the nod_modules folder.
echo    install    - execute npm install.
... etc.

ヘルプページが完成したら、最後にジャンプする必要があります。ビジネスロジックではENDラベルを使用してそこにジャンプすることを推奨しているので、必要に応じて末尾にコマンドを入力できます。一時停止など、どこでも機能します。

それであなたはそれから置く:

goto end

今度はすべての機能を追加する必要があります。

あなたはラベルから始めます。

:clean

そして、あなたはあなたのコマンドを追加します

rmdir node_modules

他のコマンドも実行したくないため、スクリプトの最後にジャンプします。

あなたはもっと空想に行くことができて、そしてどのフォルダが削除されるべきであるかを指定するために2ndパラメータを使うことができます。例えば:

rmdir %2

あなたは今走るでしょう make clean node_modules そのフォルダを削除します。

goto end

だからあなたの小さな関数はこのようになります:

:clean
rmdir node_modules
goto end

あなたがすべての機能をリストした後、あなたは明らかにやはり終わりを置く必要があります:

:end

末尾の任意のオプションのコマンドは後に置くことができます。


ありがとうございます。設定するように指示している方法が少し混乱しました。 imgur.com/a/LZgJy
Akados

下の3つのラベルを削除して、スクリプトを自然にそこに移動させます。
LPChip

チェックマークをチェックしてこの回答に自由にマークを付けてください。
LPChip
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.