%20%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
Bash では、サブシェルを使用して、1 つのコマンドの結果を次のコマンドに入力できます。
$ echo $(sub-command args)
$(sub-command args)
標準出力に書き込まれる場合foo
、上記のコマンドは以下と同等になります。
$ echo foo
Windows 7 でこれを行う方法はありますかcmd.exe
?
これを実行する理由は、パスにそのディレクトリがなくても、npm のインストール ディレクトリから実行ファイルを簡単に実行できるようにするためです。
$ $(npm bin)/grunt build
答え1
コメントで既に述べられているように、cmd でこれを行うネイティブな方法はありません。ただし、あなたのケースに使用できるハックがあります ( npm bin
1 行のみを返すため)。
for /F "tokens=*" %n IN ('npm bin') DO @(%n\grunt build)
またはバッチ ファイル内で以下を複製する必要があります%
:
for /F "tokens=*" %%n IN ('npm bin') DO @(%%n\grunt build)
代替案
バッチ
パラメータを受け取ってコマンドを実行するスクリプトを生成することができます。
:: Takes the parameters and send to npm bin output
for /f "tokens=*" %%n in ('npm bin') do @(%%n\%1 %2 %3 %4 %5)
パスに npmbin.cmd として保存し、次のコマンドを実行します。
npmbin.cmd grunt build
パワーシェル
あなたの場合、invoke-expression コマンドレットを使用して PowerShell から呼び出すことができるはずです。
iex "$(npm bin)\grunt build"
現時点では npm はインストールされていませんが、他のプログラムでテストしたところ、動作するようです。
環境変数
とにかく、前のものは非常に複雑な「解決策」だと思いますが、あなたはコマンドを単純化したいだけです。たとえば、グローバル変数を作成して、NPMBIN
それをコマンドに使用できるかどうか疑問に思っていました。
%NPMBIN%\grunt build
setx
これを拡張するには、次のようなバッチを使用して、ユーザー (または最終的にはコンピューター) に対してプログラムで設定するタスクを設定できます。
for /f "tokens=*" %%n in ('npm bin') do @(setx NPMBIN %%n)
お役に立てれば幸いです。よろしくお願いいたします