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

4

1 回答 1

2

好吧,经过一天的折腾,我遇到了一个 github 项目,它有一个压缩节点和较少的组合作为独立包,只需使用 Shell.Run 即可轻松执行,而且您不必为环境变量而烦恼一点也不。

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

所以,回答了我自己的问题。

于 2013-06-13T03:27:06.837 回答