我試圖從一個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時總會忘記的那些愚蠢的小事情之一,不是嗎?