【发布时间】:2013-06-13 11:27:06
【问题描述】:
我正在尝试从 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 时总是忘记的那些愚蠢的小事情之一,不是吗?
【问题讨论】:
标签: node.js asp-classic vbscript wsh