cscript和wscript

WScript.exe 和 CScript.exe 都是Windows Script Host(WSH Windows脚本宿主)他们有什么区别呢,据我所知,最大的区别是前者是窗口模式运行后者是命令行模式运行的(字符方式). 比如,你在脚本中用上wscript.stdout.write "test..." 语句用WScript来运行,就会报句柄无效的错误,而用CScript来运行,就正常输出了

Windows Script Host enables you to run scripts from Windows. WScript.exe provides a Windows-based dialog box for setting script properties. Using WScript.exe, you can run scripts under Windows in the following ways. Whether you use WScript or CScript, you still run the scripts in the same manner. The difference is only in the output — WScript generates windowed output, while CScript sends its output to the command window in which it was started.

 

 

wscript

 

参数

//B   指定批处理模式,它不显示警报、脚本错误或输入提示。

//D   启动调试程序(Avtive Debugging) 。    

//E: Engine   指定用于运行脚本的引擎。

//H:cscript   将 Cscript.exe 注册为运行脚本的默认脚本宿主。

//H:wscript   将 Wscript.exe 注册为运行脚本的默认脚本宿主。这是默认设置。

//I   指定交互模式,它显示警报、脚本错误和输入提示。这是默认值,相反值是 //B。

//Job: Identifier   运行 .wsf 脚本文件中以 Identifier 标识的作业。

//Logo   指定 Windows 脚本宿主横幅在脚本运行之前显示在控制台中。这是默认值,相反值是 //Nologo。

//Nologo   指定 Windows 脚本宿主横幅在脚本运行之前不显示。

//S   保存当前用户的当前命令提示符选项。

//T: Number   指定脚本可以运行的最大时间(以秒计)。您可以指定最大为 32,767 秒。默认为无时间限制。

//X   启动调试程序中的脚本。

 

*注: 需要启用文件扩展

         没有指定脚本就不能指定脚本参数

         Windows 脚本文件通常带有如下文件扩展名:.wsf、.vbs、.js.   

 

cscript

参数基本与wscript相同,只是多了下面1个参数:

//U

指定 Unicode 作为从控制台重定向的输入和输出的编码格式。

 

一个脚本文件,如后缀为 .vbs  在 Windows 下双击并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是 Windows Scripting Host,程序执行文件名为 Wscript.exe  默认(若是在命令行下,则为 Cscript.exe)。

 

 

重定向操作符

说明

>

将命令输出写入到文件或设备(例如打印机)中,而不是写在命令提示符窗口中。

<

从文件中而不是从键盘中读入命令输入。

>>

将命令输出添加到文件末尾而不删除文件中的信息。

>&

将一个句柄的输出写入到另一个句柄的输入中。

<&

从一个句柄读取输入并将其写入到另一个句柄输出中。

|

从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。

1、|
help | more
回车后会发现显示满一屏幕后就自动暂停,等候继续显示其他信息。当按写回车时,变成一个一个的出现;按下空格键时一屏幕一屏幕显示,直到全部显示完为止;按其他键自动停止返回DOS。 为什么会出现上述现象?答案很简单,这里结合了管道命令|和DOS命令more来共同达到目的的。这里先简单介绍一下help命令和more命令,对理解|命令的用法有很大帮助。

1.1、help命令。
其实这个命令是不需要多说的,但在上述例子中help命令的用法比较特殊,直接在DOS提示符下输入help命令,结果是让DOS显示其所支持的所有非隐含命令,而在其他地方用help命令,如输入net help回车,则是显示net命令的帮助信息。

1.2、more命令。
可能很多朋友以前就没有接触过这个命令,这个命令在Linux下的用处非常广泛,也是管道命令之一。大家可以找一篇比较长的文章(a.txt)在DOS提示符下输入如下两个命令去比较一下差别:more a.txt和type a.txt。利用more命令,可以达到逐屏或逐行显示输出的效果,而type命令只能一次把输出显示完,最后的结果就是只能看到末尾的部分。在例十三里,more命令的作用就是让输出的信息逐屏或逐行显示。看到这里,你是否已经能隐约感受到了|命令的作用了?没错,它的作用,就是把前一命令的输出当后一命令的输入来用的。在例十三里,前一命令的输出,就是help命令执行后显示的DOS所支持的所有非隐含命令,而这个结果刚好做了后一命令more的输入。所以例十三和下面的例十四是等效的:
help > a.txt
more a.txt
del a.txt
这里利用另一管道命令>生成了一个a.txt文件作为中间环节,在用more命令查看a.txt文件后再删除a.txt文件(例十三的所有好啊作是在内存中进行的,不生成文件)。可以看出,正确使用管道命令|可以带来事半功倍的效果。 结合例十三和例十四,以及前面的例九再体会一遍:|命令的作用,就是让前一命令的输出当做后一命令的输入。

2、>、>>
这两个命令的效果从本质上来说都是一样的,他们都是输出重定向命令,说的通俗一点,就是把前面命令的输出写入到一个文件中。这两个命令的唯一区别是,>会清除掉原有文件中的内容后把新的内容写入原文件,而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。例十五:
echo @echo off > a.bat
echo echo This is a pipeline command example. >> a.bat
echo echo It is very easy? >> a.bat
echo echo Believe your self! >> a.bat
echo pause >> a.bat
echo exit >> a.bat
依次在DOS提示符下输入以上各行命令,一行一个回车,将在当前目录下生成一个a.bat文件,里面的内容如下:
@echo off
echo This is a pipeline command example.
echo It is very easy?
echo Believe your self!
pause
exit
看到这里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的写入功能编辑一个文本,而不需要专门的文本编辑工具;2、管道命令>和>>的区别如上所述。如果这里只用>命令来完成上面好啊作,最后也会生成一个a.bat,但里面的内容就只剩下最后一行exit了。所以>和>>一般都联合起来用,除非你重定向的输出只有一行,那么就可以只用>了。结合例一再仔细体会输出重定向管道命令>和>>的用法。

3、<、>&、<&
这三个命令也是管道命令,但它们一般不常用,你只需要知道一下就ok了,当然如果想仔细研究的话,可以自己查一下资料。
<,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。
>&,将一个句柄的输出写入到另一个句柄的输入中。
<&,刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中。
关于这三个管道命令的举例,在后面批处理脚本的精妙应用中还将涉及到。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值