0

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 つですよね。

4

1 に答える 1