vbscript/classic asp ページから nodejs コマンドを実行しようとしています。私はlessc(コンパイラが少ない)から始めていますが、他のコマンドも使用する必要があります。
nodejs がインストールされ、lessc をグローバル名前空間にインストールしました (例npm install -g less
) (サーバーの cmd プロンプトで) lessc を発行でき、動作します。
サーバー コマンド プロンプトで、lessc を実行する次のようなコマンドを発行できます。
lessc D:\webs\player\Layout\less\app.less > D:\webs\player\Layout\less\app.css
しかし、vbscript内でこのように実行すると:
dim path : path = "D:\webs\player\Layout\less\"
dim shell : shell = server.createobject("WScript.Shell")
dim errCode : errCode = shell.Run("lessc " & path & "\app.less > " & path & "\app.css", 0, true)
response.write errCode
その後、何もしません。コマンドを置き換えて、lessc の前に CMD を実行すると、一歩前進します。ゼロ バイトの出力ファイル (app.css) が作成されます。
dim errCode : errCode = shell.Run("CMD /C lessc " & path & "\app.less > " & path & "\app.css", 0, true)
lessc
したがって、パス変数で定義されているにもかかわらず、 が見つからないように見えます。ECHO %PATH%
サーバー コマンド プロンプトで、lessc が配置されているパスが表示されます。それで、lesscへのフルパスを実行しようとしましたが、それでもうまくいかないようです(エラーなし、出力なし):
dim errCode : errCode = shell.Run("CMD /C C:\Users\Administrator\AppData\Roaming\npm\lessc " & path & "\app.less > " & path & "\app.css", 0, true)
..今イライラする..自分の出力をlessc
ファイルにパイプしようとしたところ、ゼロバイトのファイルが出力されました。つまり、lessc を実行していないだけで、何かを実行しています。
call shell.Run("CMD /C C:\Users\Administrator\AppData\Roaming\npm\lessc > c:\temp\lessc.txt", 0, true)
とにかく、shell.run でパス変数を機能させるにはどうすればよいでしょうか? vbscript/classic asp から nodejs コマンド サーバー側を実行するより良い方法はありますか? これは、IIS を使用しているときに私がいつも忘れがちなことの 1 つですよね。