我计划明天使用JavaScript进入信息学竞赛(BIO).但是,我不能依赖考官拥有一个体面的JavaScript引擎,所以我希望改用微软的JScript.
但是,坦率地说,文档是废话.有人可以发布一些示例代码,这些代码读取一行文本,调用foo(string)它,并将输出回显到命令行吗?
同样,我如何实际运行它?会wscript.exe PATH_TO_JS_FILE做的伎俩?      
请考虑以下WSH代码段:
var query = GetObject("winmgmts:").ExecQuery("SELECT Name FROM Win32_Printer", "WQL", 0);
var e = new Enumerator(query);
for ( ; !e.atEnd(); e.moveNext ()) { 
    var p = e.item();
    WScript.Echo(p.Name + " (" + p.Status + ")");
}
它在每一行打印一个打印机名称和括号中的"未定义"一词(因为对象中Status不存在p属性).问题是:我如何列出所有可用的属性p?通常的技术for (var i in p) {...}不起作用 - 似乎p对象中的属性不可枚举.
提前致谢.
目前我必须处理用VB编写的遗留系统.我对VB和ASP不太满意,所以我决定用JScript编写这个系统的新代码.
但是,这两种语言之间的互操作性存在一些问题:即,当我试图调用在<script language="vbscript">tag中声明的某个函数时,它会因" Object expected "错误而失败(如果页面语言是VBScript),反之亦然.
即,以下代码:
inc.asp
<script language="vbscript" runat="server">
Sub VBTestFunction(Message)
    Response.Write "VBTestFunction: " & Message
End Sub
</script>
<script language="javascript" runat="server">
function JSTestFunction(Message) {
    Response.Write("JSTestFunction: " + Message);
}
</script>
testjs.asp
<%@ Language="JavaScript" %>
<!-- #include file="inc.asp"-->
<script language="javascript" runat="server">
    VBTestFunction("from javascript");
    JSTestFunction("from javascript");
</script>
<script language="vbscript" runat="server">
    Call VBTestFunction("from vbscript")
    Call JSTestFunction("from vbscript")
</script>
失败,出现以下错误:
VBTestFunction: from vbscript
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'JSTestFunction'
/test.asp, line 9
(如果我对特定行进行评论,其他三个语句将正常工作); 将页面语言设置为VBScript
<%@ Language="VBScript" %> …我在VBS和JScript中有两个小程序:
VBScript.vbs:
For i=0 To 255
   WScript.StdOut.Write Chr(i)
Next
JScript.js:
for ( var i=0; i <= 255; ++i )
   WScript.StdOut.Write(String.fromCharCode(i));
当我在命令提示符中执行它们时,它们显示不同的结果:
C:>cscript /nologo VBScript.vbs
 ?????
??????¶§?????????? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~???'ƒ".??^%S<O?Z??''""--~Ts>o?zY ¡¢£¤¥¦§¨©ª«¬®
¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ
ÿ
C:>cscript /nologo JScript.js
 ?????
??????¶§?????????? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????? ¡¢£¤¥¦§¨©ª«¬
®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüý
þÿ
可以解释之前的输出,因为JScript的fromCharCode方法与VBScript的Chr函数之间存在一些操作差异.但是,如果尝试将输出重定向到磁盘文件,结果会有很大不同:
C:>cscript /nologo VBScript.vbs > VBScript.txt
C:>cscript /nologo JScript.js > JScript.txt
C:\JScript.js(2, 4) Microsoft JScript runtime error: Invalid procedure call or argument
C:>dir *.txt
15/01/2013  05:48 p.m.               128 JScript.txt
15/01/2013  05:48 p.m.               256 VBScript.txt
在这种情况下,两个程序在相同的条件下使用相同的 WSH方法,所以我不明白为什么VBS正确生成256个字符的文件,但JScript发出错误并只生成前128个字符. …
当您通过 CScript.exe 执行扩展名为 .VBS、.JS 或 .WSF 的文件时,它们会正确执行:
CScript vbsProg.vbs
CScript jsProg.js
CScript wshScript.wsf
但是,我们可以使用 //E:engine 选项来运行具有不同扩展名的 VBS 或 JScript 文件:
CScript //E:VBS vbsProg.txt
CScript //E:JScript jsProg.txt
有什么方法可以对 WSF 文件执行相同的操作吗?
CScript //E:WhatGoesHere wshScript.txt
是否有记录脚本引擎名称的地方?有没有办法知道所有已安装引擎的名称?
谢谢!
安东尼奥
我有日历,并有一些客户字段,并通过自定义表单输入.由于自定义表单默认使用SharePoint:FormField for people picker; 我已使用以下内容包含ClientPeoplePicker
<SharePoint:ClientPeoplePicker Required="true" ValidationEnabled="true" ID="peoplepciker"  runat="server" AutoFillEnabled="True" VisibleSuggestions="3"  Rows="1" AllowMultipleEntities="false"  CssClass="ms-long ms-spellcheck-true" Height="85px" />
有人可以建议我如何将这个peoplepicker的输出"链接"/绑定到日历列表中的字段?
我只使用SP_Designer2013和SharePoint客户端,并且无法访问任何其他形状/形式的后端/服务器.
任何帮助都非常感谢.
谢谢
我有一些git命令,我想在限制性的Windows环境中自动化.我发现自己一遍又一遍地运行这些命令,在Git Bash中执行.
$ git cd "R:/my/directory/repo"
$ git pull
$ git checkout "MyBranch"
$ git merge "MyOtherBranch"
和
$ git checkout "MyBranch"
$ git add .
$ git commit -m "My commit comments"
我精通JScript,我知道它在我的限制性Windows环境中工作,所以我想要做的就是通过打开命令提示符并输入来开始我的一天
cscript.exe "MyGitRefreshScript.wsf" "MyBranch" "MyOtherBranch"
然后根据需要,在一天的剩余时间里,我可以做到这一点,也可以使用
cscript.exe "MyGitCommitScript.wsf" "MyBranch" "My commit comments"
然后我可以愉快地坐在那里,按下向上箭头,然后在我工作的那一整天运行那些.
我无法在我的机器上安装第三方应用程序或工具,因此我希望在.wsf文件中使用JScript来完成此任务.我也希望能像我现在一样在Git Bash中运行命令时看到输出消息.
就像是:
<job id="main">
    <script language="JScript">
        var sh = new ActiveXObject("WScript.Shell");
        sh.Run(Git.exe "SomeCommand" ?);
        //or
        var git = new ActiveXObject("Git");
        git.SomeCommand ???
        ...
这是可能的,如果是的话,怎么样?是否有明确的替代方案,不涉及某些第三方工具安装?
谢谢
如果我有以下脚本(只是将第一个参数打印到控制台):
@if (@X)==(@Y) @end /* JScript comment
    @echo off
    cscript //E:JScript //nologo "%~f0" %*
    exit /b %errorlevel%
@if (@X)==(@Y) @end JScript comment */
WScript.Echo(WScript.Arguments.Item(0));
我尝试了类似的东西
C:\>test.bat "//test"
我收到以下错误
输入错误:指定了未知选项"// test".
尽管有引号.它被视为windows脚本主机的一个选项.如何传递以...开头的参数//.命名参数?
我有一个array看起来像这样,我怎么能按字母顺序排序而不丢失密钥?
var items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];
我正在使用 InstallShield Express 创建一个安装项目。
我尝试在“系统更改”之前为卸载添加自定义操作。
自定义操作是一个 JavaScript,它将打开一个窗口,如下所示:
window.open("https://www.example.com/", "_blank");
但是,当我尝试卸载该程序时,我收到一条错误消息:“Microsoft JScript 运行时错误,'window' 未定义。
为什么?
更新:
最后我选择使用 MSI DLL 而不是脚本来解决问题。这个问题我该怎么办?谢谢。
jscript ×10
wsh ×6
vbscript ×4
javascript ×2
alphabetical ×1
arrays ×1
asp-classic ×1
asp.net ×1
c# ×1
git ×1
scripting ×1
sharepoint ×1
sorting ×1