gpt4 book ai didi

windows - Windows : VBScript, JScript, Wscript 选哪个

转载 作者:可可西里 更新时间:2023-11-01 13:27:41 32 4
gpt4 key购买 nike

我需要为 WinXP 编写一些脚本来支持 Big Financial Corp 的一些分析师。我需要决定哪种类型的 Windows 脚本最适合我的需要。

我的需求似乎很简单(无论如何对我来说)

  1. 在 WinXP Pro SP2(2002 版)上运行
  2. 不要求我的用户安装任何东西(所以 PowerShell 已经过时了。同样,Perl、Python 和其他针对 Stack Overflow 上这类问题的常见建议)
  3. 用非编译语言编写(因此用户将来有机会修改它们)
  4. 相当完整的语言功能(尤其是日期/时间操作功能。我也想拥有现代概念,如子程序、递归等)
  5. 能够启动和控制其他程序(在命令行)

从我对我的选择的匆忙审查来看,我的选择似乎是

  1. VB脚本
  2. 文字
  3. 脚本

我没有时间学习或深入审查这些(或任何其他可用的 WinXP 标准安装)。我需要尽快挑选并破解一些东西。

(当前的危机是需要运行给定的应用程序,传递多个日期参数)。

一旦当前的危机结束,将会有更多这样的请求。

编辑

我目前的技能组合包括 Perl、JavaScript 和 Java,所以我最习惯使用与这些类似的东西

编辑

好的。我将尝试用 JScript 编写一个 WSH 文件。一旦这里的事情稍微稳定下来,我会让您知道进展情况(并想出接受答案)。

编辑

最后一切都解决了。感谢大家的快速回复。这是我给用户的:

<job id="main">
<script language="JScript">
// ----- Do not change anything above this line ----- //

var template = "c:\\path\\to\\program -##PARAM## --start ##date1## --end ##date2## --output F:\\path\\to\\whereever\\ouput_file_##date1##.mdb";

// Handle dates
// first, figure out what they should be
dt = new Date();
var date1 = stringFromDate(dt, 1);
var date2 = stringFromDate(dt, 2);

// then insert them into the template
template = template.replace(new RegExp("##date1##", "g"), date1);
template = template.replace(new RegExp("##date2##", "g"), date2);

// This application needs to run twice, the only difference is a single parameter
var params = ["r", "i"]; // here are the params.

// set up a shell object to run the command for us
var shellObj = new ActiveXObject("WScript.Shell");

// now run the program once for each of the above parameters
for ( var index in params )
{
var runString = template; // set up the string we'll pass to the wondows console
runString = runString.replace(new RegExp("##PARAM##", "g"), params[index]); // replace the parameter
WScript.Echo(runString);

var execObj = shellObj.Exec( runString );
while( execObj.Status == 0 )
{
WScript.Sleep(1000); //time in milliseconds
}
WScript.Echo("Finished with status: " + execObj.Status + "\n");
}


// ----- supporting functions ----- //

// Given a date, return a string of that date in the format yyyy-m-d
// If given an offset, it first adjusts the date by that number of days
function stringFromDate(dateObj, offsetDays){
if (typeof(offsetDays) == "undefined"){
offsetDays = 0;
}
dateObj.setDate( dateObj.getDate() + offsetDays );

var s = dateObj.getYear() + "-"; //Year
s += (dateObj.getMonth() + 1) + "-"; //Month (zero-based)
s += dateObj.getDate(); //Day

return(s);
}

// ----- Do not change anything below this line ----- //
</script>
</job>

显然它可能会更好......但它完成了工作并且很容易让我的用户理解和扩展他自己。

最佳答案

这些在技术上都是相同的东西,只是语法不同。实际上 WScript/CScript 是引擎,VBScript 和 JScript 是语言。

个人意见仅供引用:我个人推荐的是 JScript,因为它让我想起了一种真正的编程语言,并且比 VBScript 更让我想打自己的脸较少。鉴于您熟悉 javascript,最好的选择是 JScript。

像其他人一样,更详细地了解 WScript 和 CScript 之间的区别:这些是 Windows 脚本宿主脚本的执行平台。它们本质上是相同的东西,而 WScript 更面向 GUI,而 CScript 更面向控制台。如果您使用 CScript 启动脚本,您将看到一个控制台窗口,但您仍然可以访问 GUI 功能,而如果您使用 WScript 启动,则没有控制台窗口,并且许多默认输出方法显示为窗口对象而不是控制台中的一行。

关于windows - Windows : VBScript, JScript, Wscript 选哪个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511301/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com