【问题标题】:execute nodejs command from wscript.run in classic asp在经典 asp 中从 wscript.run 执行 nodejs 命令
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 2018-12-01
      相关资源
      最近更新 更多