我正在尝试从 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 时总是忘记的那些愚蠢的小事情之一,不是吗?