标签: jscript

如何编写简单的JScript输入/输出程序?

我计划明天使用JavaScript进入信息学竞赛(BIO).但是,我不能依赖考官拥有一个体面的JavaScript引擎,所以我希望改用微软的JScript.

但是,坦率地说,文档是废话.有人可以发布一些示例代码,这些代码读取一行文本,调用foo(string)它,并将输出回显到命令行吗?

同样,我如何实际运行它?会wscript.exe PATH_TO_JS_FILE做的伎俩?

javascript wsh jscript

7
推荐指数
2
解决办法
2万
查看次数

JScript枚举器和属性列表

请考虑以下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对象中的属性不可枚举.

提前致谢.

wsh jscript

6
推荐指数
2
解决办法
8248
查看次数

从JScript代码调用VB编写的函数(经典ASP)

目前我必须处理用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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

失败,出现以下错误:

VBTestFunction: from vbscript
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'JSTestFunction'
/test.asp, line 9
Run Code Online (Sandbox Code Playgroud)

(如果我对特定行进行评论,其他三个语句将正常工作); 将页面语言设置为VBScript

<%@ Language="VBScript" %> …
Run Code Online (Sandbox Code Playgroud)

vbscript asp-classic jscript

6
推荐指数
1
解决办法
1万
查看次数

为什么WScript.StdOut.Write方法在VBS与JScript中的行为不同?

我在VBS和JScript中有两个小程序:

VBScript.vbs:

For i=0 To 255
   WScript.StdOut.Write Chr(i)
Next
Run Code Online (Sandbox Code Playgroud)

JScript.js:

for ( var i=0; i <= 255; ++i )
   WScript.StdOut.Write(String.fromCharCode(i));
Run Code Online (Sandbox Code Playgroud)

当我在命令提示符中执行它们时,它们显示不同的结果:

C:>cscript /nologo VBScript.vbs
 ?????
??????¶§?????????? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~???'ƒ".??^%S<O?Z??''""--~Ts>o?zY ¡¢£¤¥¦§¨©ª«¬­®
¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ
ÿ

C:>cscript /nologo JScript.js
 ?????
??????¶§?????????? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????? ¡¢£¤¥¦§¨©ª«¬­
®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüý
þÿ
Run Code Online (Sandbox Code Playgroud)

可以解释之前的输出,因为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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,两个程序在相同的条件下使用相同的 WSH方法,所以我不明白为什么VBS正确生成256个字符的文件,但JScript发出错误并只生成前128个字符. …

vbscript wsh windows-scripting jscript

6
推荐指数
1
解决办法
4932
查看次数

如何知道 CScript.exe 的 //E:engine 选项的有效脚本引擎名称?

当您通过 CScript.exe 执行扩展名为 .VBS、.JS 或 .WSF 的文件时,它们会正确执行:

CScript vbsProg.vbs
CScript jsProg.js
CScript wshScript.wsf
Run Code Online (Sandbox Code Playgroud)

但是,我们可以使用 //E:engine 选项来运行具有不同扩展名的 VBS 或 JScript 文件:

CScript //E:VBS vbsProg.txt
CScript //E:JScript jsProg.txt
Run Code Online (Sandbox Code Playgroud)

有什么方法可以对 WSF 文件执行相同的操作吗?

CScript //E:WhatGoesHere wshScript.txt
Run Code Online (Sandbox Code Playgroud)

是否有记录脚本引擎名称的地方?有没有办法知道所有已安装引擎的名称?

谢谢!

安东尼奥

vbscript wsh jscript

6
推荐指数
1
解决办法
6887
查看次数

CustomForm中的ClientPeoplePicker

我有日历,并有一些客户字段,并通过自定义表单输入.由于自定义表单默认使用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" />
Run Code Online (Sandbox Code Playgroud)

有人可以建议我如何将这个peoplepicker的输出"链接"/绑定到日历列表中的字段?

我只使用SP_Designer2013和SharePoint客户端,并且无法访问任何其他形状/形式的后端/服务器.

任何帮助都非常感谢.

谢谢

c# asp.net sharepoint jscript sharepoint-2013

6
推荐指数
1
解决办法
8161
查看次数

在Windows中编写Git命令脚本

我有一些git命令,我想在限制性的Windows环境中自动化.我发现自己一遍又一遍地运行这些命令,在Git Bash中执行.

$ git cd "R:/my/directory/repo"
$ git pull
$ git checkout "MyBranch"
$ git merge "MyOtherBranch"
Run Code Online (Sandbox Code Playgroud)

$ git checkout "MyBranch"
$ git add .
$ git commit -m "My commit comments"
Run Code Online (Sandbox Code Playgroud)

我精通JScript,我知道它在我的限制性Windows环境中工作,所以我想要做的就是通过打开命令提示符并输入来开始我的一天

cscript.exe "MyGitRefreshScript.wsf" "MyBranch" "MyOtherBranch"
Run Code Online (Sandbox Code Playgroud)

然后根据需要,在一天的剩余时间里,我可以做到这一点,也可以使用

cscript.exe "MyGitCommitScript.wsf" "MyBranch" "My commit comments"
Run Code Online (Sandbox Code Playgroud)

然后我可以愉快地坐在那里,按下向上箭头,然后在我工作的那一整天运行那些.

我无法在我的机器上安装第三方应用程序或工具,因此我希望在.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 ???

        ...
Run Code Online (Sandbox Code Playgroud)

这是可能的,如果是的话,怎么样?是否有明确的替代方案,不涉及某些第三方工具安装?

谢谢

git scripting wsh jscript

6
推荐指数
1
解决办法
1万
查看次数

如何将以"//"开头的参数传递给wsh脚本?

如果我有以下脚本(只是将第一个参数打印到控制台):

@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));
Run Code Online (Sandbox Code Playgroud)

我尝试了类似的东西

C:\>test.bat "//test"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

输入错误:指定了未知选项"// test".

尽管有引号.它被视为windows脚本主机的一个选项.如何传递以...开头的参数//.命名参数?

vbscript wsh jscript

6
推荐指数
1
解决办法
502
查看次数

另一个javascript数组字母排序很难

我有一个array看起来像这样,我怎么能按字母顺序排序而不丢失密钥?

var items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting alphabetical jscript

6
推荐指数
2
解决办法
70
查看次数

无法在 InstallShield Express 中运行 JavaScript?

我正在使用 InstallShield Express 创建一个安装项目。

我尝试在“系统更改”之前为卸载添加自定义操作。

自定义操作是一个 JavaScript,它将打开一个窗口,如下所示:

window.open("https://www.example.com/", "_blank");
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试卸载该程序时,我收到一条错误消息:“Microsoft JScript 运行时错误,'window' 未定义。

为什么?

更新:

最后我选择使用 MSI DLL 而不是脚本来解决问题。这个问题我该怎么办?谢谢。

installshield uninstallation jscript

6
推荐指数
1
解决办法
153
查看次数