2013-06-12 21 views
0

我試圖從一個VBScript /經典的ASP頁執行nodejs命令。我從lessc開始(少編譯器),但也需要使用其他命令。執行nodejs命令從wscript.run在經典asp

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 

那麼它沒有。代的命令,使其運行CMD提前lessc的前進了一步:它會創建一個零字節的輸出文件(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

那麼,經過一天的瑣事,我遇到了一個github項目,它有一個壓縮節點和較少的組合作爲一個獨立的軟件包,使用Shell.Run很容易執行,而且您不必沉溺與環境變量有關。

https://github.com/duncansmart/less.js-windows

所以,回答我的問題。