我在VBScript初学者.我GOOGLE了它和认识了,我们可以从命令行由下面的命令执行运行VBScript:
例如,我的vbscript名称是Converter.vbs&它出现在文件夹中D:\VBS.
我可以通过以下方式运行:
CScript "D:\VBS\Converter.vbs"
Run Code Online (Sandbox Code Playgroud)
要么
WScript "D:\VBS\Converter.vbs"
Run Code Online (Sandbox Code Playgroud)
现在,我想上面执行VBScript 没有 Cscript或Wscript只需键入VBscript的名称即转换器的名称命令.
我不希望指定VBSCRIPT每次的完整路径.
任何人都可以请指导我该怎么做?
C. *_* M. 16
我将其分解为几个不同的部分,因为每个部分都可以单独完成.(我看到了类似的答案,但我将在这里给出更详细的解释..)
第一部分,为了避免键入"CScript"(或"WScript"),您需要告诉Windows如何启动*.vbs脚本文件.在我的Windows 8中(我无法确定所有这些命令的工作方式与旧版Windows中的完全相同,但过程是相同的,即使您必须稍微更改命令),也可以启动控制台窗口(也称为"命令提示符",或称[错误]"dos提示")并键入" assoc .vbs ".这应该会产生如下响应:
C:\Windows\System32>assoc .vbs
.vbs=VBSFile
Run Code Online (Sandbox Code Playgroud)
然后使用它,然后键入" ftype VBSFile ",这将导致响应:
C:\Windows\System32>ftype VBSFile
vbsfile="%SystemRoot%\System32\WScript.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)
-要么-
C:\Windows\System32>ftype VBSFile
vbsfile="%SystemRoot%\System32\CScript.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)
如果这两个已经如上定义,则Windows'已经设置为知道如何启动*.vbs文件.(BTW,WScript和CScript是相同的程序,使用不同的名称.WScript启动脚本就好像它是一个GUI程序,CScript启动它就像它是一个命令行程序.有关这些详细信息,请参阅其他站点和/或文档和警告.)
如果其中一个命令没有按上述方式响应(或者类似的响应,如果assoc报告的文件类型和/或ftype报告的命令执行的命令具有不同的名称或位置),您可以自己输入:
C:\Windows\System32>assoc .vbs=VBSFile
Run Code Online (Sandbox Code Playgroud)
- 和/或
C:\Windows\System32>ftype vbsfile="%SystemRoot%\System32\WScript.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)
您还可以键入" help assoc "或" help ftype "以获取有关这些命令的其他信息,这些命令通常只需键入具有特定扩展名的文件名即可自动运行某些程序.(但要小心,因为某些文件扩展名是由Windows或您安装的程序专门设置的,因此它们可以正常运行.始终检查由assoc/ftype报告的当前分配的值,并将它们保存在某处的文本文件中以防万一恢复他们.)
第二部分,避免在从控制台窗口输入命令时键入文件扩展名.了解Windows(和CMD.EXE程序)如何找到您键入的命令对此(以及下一个)部分非常有用.当您键入命令时,让我们使用"querty"作为示例命令,系统将首先尝试在其内部命令列表中找到命令(通过Windows注册表中的系统本身设置,或者在案例中编程) of CMD.EXE).由于没有这样的命令,它将尝试在当前%PATH%环境变量中找到该命令.在旧版本的DOS/Windows中,CMD.EXE(和/或COMMAND.COM)会自动将文件扩展名".bat",".exe",".com"和可能的".cmd"添加到命令名称中键入,除非您明确键入扩展名(例如"querty.bat"以避免错误地运行"querty.exe").在更现代的Windows中,它将尝试%PATHEXT%环境变量中列出的扩展.所以你要做的就是将.vbs添加到%PATHEXT%.例如,这是我的%PATHEXT%:
C:\Windows\System32>set pathext
PATHEXT=.PLX;.PLW;.PL;.BAT;.CMD;.VBS;.COM;.EXE;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY
Run Code Online (Sandbox Code Playgroud)
请注意,扩展必须包含".",用";"分隔,并且.VBS列在AFTER .CMD之后,但是BEFORE .COM.这意味着如果命令处理器(CMD.EXE)找到多个匹配项,它将使用列出的第一个匹配项.也就是说,如果我有query.cmd,querty.vbs和querty.com,它将使用querty.cmd.
现在,如果你想一直这样做而不必继续设置%PATHEXT%,你将不得不修改系统环境.在控制台窗口中键入它只会更改该控制台窗口会话.我会把这个过程留给读者练习.:-P
第三部分,让脚本运行而不总是输入完整路径.关于第二部分,这一部分自DOS时代就开始存在.只需确保该文件位于%PATH%环境变量中列出的目录(文件夹,对于Windows民用!)中.我的建议是创建自己的目录来存储您在控制台窗口/命令提示符下创建或经常使用的各种文件和程序(也就是说,不要担心对从开始菜单或任何其他方法运行的程序执行此操作.只有控制台窗口.除非你知道你在做什么,否则不要乱用Windows或自动安装程序安装的程序.
就个人而言,我总是为批处理文件创建一个"C:\ sys\bat"目录,为*.exe和*.com文件创建一个"C:\ sys\bin"目录(例如,如果你下载像"md5sum"这样的东西,MD5校验和实用程序),VBScripts的"C:\ sys\wsh"目录(和JScripts,名为"wsh",因为它们都是使用"Windows Scripting Host"或"wsh"程序执行的),依此类推.然后我将这些添加到我的系统%PATH%变量(控制面板 - >高级系统设置 - >高级选项卡 - >环境变量按钮),因此Windows可以在我键入它时始终找到它们.
将所有这三个部分组合在一起将导致配置Windows系统,以便您可以在命令行命令中输入任何位置,只需键入其基本文件名即可启动VBScript.几乎任何文件类型/扩展名都可以这样做; 正如您在我的%PATHEXT%输出中看到的那样,我的系统也设置为运行Perl脚本(.PLX; .PLW; .PL)和Python(.PY)脚本.(我还在%PATH%的前面放了"C:\ sys\bat; C:\ sys\scripts; C:\ sys\wsh; C:\ sys\bin",并放了各种批处理文件,脚本文件等等,在这些目录中,所以Windows总能找到它们.如果你想"覆盖"一些命令,这也很方便:将*.bat文件放在路径的第一位,使系统在*.exe文件之前找到它们例如,然后*.bat文件可以通过提供实际*.exe文件的完整路径来启动实际程序.查看"批处理文件编程"中的各个站点以获取详细信息和其他功能示例.命令行..还没死!)
最后一点说明:请查看其他一些网站,了解各种警告和警告.这个问题提出了一个名为"converter.vbs"的脚本,它非常接近命令"convert.exe",这是一个将你的硬盘从FAT文件系统转换为NTFS文件系统的Windows程序.如果你输入错误,请破坏你的硬盘!
另一方面,使用上述技术,您也可以避免这些错误.以CONVERT.EXE为例.将其重命名为"REAL_CONVERT.EXE",然后创建"C:\ sys\bat\convert.bat"之类的文件,其中包含:
@ECHO OFF
ECHO !DANGER! !DANGER! !DANGER! !DANGER, WILL ROBINSON!
ECHO This command will convert your hard drive to NTFS! DO YOU REALLY WANT TO DO THIS?!
ECHO PRESS CONTROL-C TO ABORT, otherwise..
REM "PAUSE" will pause the batch file with the message "Press any key to continue...",
REM and also allow the user to press CONTROL-C which will prompt the user to abort or
REM continue running the batch file.
PAUSE
ECHO Okay, if you're really determined to do this, type this command:
ECHO. %SystemRoot%\SYSTEM32\REAL_CONVERT.EXE
ECHO to run the real CONVERT.EXE program. Have a nice day!
Run Code Online (Sandbox Code Playgroud)
你也可以在现代Windows中使用CHOICE.EXE来让用户输入"y"或"n",如果他们真的想要继续,依此类推.再次,批量(和脚本)文件的力量!
这里有一些关于如何使用所有这些功能的一些好资源的链接:
http://www.computerhope.com/batch.htm
http://commandwindows.com/batch.htm
http://www.robvanderwoude.com/batchfiles.php
大多数这些站点都面向批处理文件,但其中的大多数信息适用于运行任何类型的批处理(*.bat)文件,命令(*.cmd)文件和脚本(*.vbs,*.js,*.pl,*.py等文件.
当进入脚本的完整文件规范或它的命令行上的文件名,外壳会用通俗易懂的信息通过
assoc | grep -i vbs
.vbs=VBSFile
ftype | grep -i vbs
VBSFile=%SystemRoot%\System32\CScript.exe "%1" %*
Run Code Online (Sandbox Code Playgroud)
决定为脚本运行哪个程序.在我的情况下,它的Cscript.exe,在你的将是WScript.exe的 - 这解释了为什么你WScript.Echos导致MsgBoxes.
如
cscript /?
Usage: CScript scriptname.extension [option...] [arguments...]
Options:
//B Batch mode: Suppresses script errors and prompts from displaying
//D Enable Active Debugging
//E:engine Use engine for executing script
//H:CScript Changes the default script host to CScript.exe
//H:WScript Changes the default script host to WScript.exe (default)
//I Interactive mode (default, opposite of //B)
//Job:xxxx Execute a WSF job
//Logo Display logo (default)
//Nologo Prevent logo display: No banner will be shown at execution time
//S Save current command line options for this user
//T:nn Time out in seconds: Maximum time a script is permitted to run
//X Execute script in debugger
//U Use Unicode for redirected I/O from the console
Run Code Online (Sandbox Code Playgroud)
所示,您可以使用// E和// s到永久切换默认主机CSCRIPT.EXE.
如果你是这么懒,你甚至不想键入扩展,确保PATHEXT环境变量
set | grep -i vbs
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.py;.pyw;.tcl;.PSC1
Run Code Online (Sandbox Code Playgroud)
包含.VBS并没有Converter.cmd(你的硬盘转换成一台洗衣机)在你的路径.
更新WRT评论:
如果你不想指定我的VBScript每次的完整路径",您可以:
cscript p:\ath\to\CONVERTER.VBS在这两种情况下,我都会输出扩展名以避免(令人讨厌的)意外.
我想知道为什么你不能把它放在一个批处理文件中。例子:
cd D:\VBS\
WSCript Converter.vbs
Run Code Online (Sandbox Code Playgroud)
将上述代码放在一个文本文件中,并以 .bat 扩展名保存该文本文件。现在您只需运行这个 .bat 文件。
为什么不将 vbscript 存储在批处理/vbscript 文件混合中。将批处理混合 Converter.bat 命名为,您可以从 cmd 行直接将其作为 Converter 执行。当然你可以默认所有脚本从 Cscript 或 Wscript 运行,但是如果你想将你的 vbs 作为 Windows 脚本而不是控制台脚本执行,这可能会在以后引起一些混乱。因此,只需将您的代码设置为批处理文件并直接运行即可。
检查答案 ->这里
这是一个例子:
转换器.bat
::' VBS/Batch Hybrid
::' --- Batch portion ---------
rem^ &@echo off
rem^ &call :'sub
rem^ &exit /b
:'sub
rem^ &echo begin batch
rem^ &cscript //nologo //e:vbscript "%~f0"
rem^ &echo end batch
rem^ &exit /b
'----- VBS portion -----
Dim tester
tester = "Convert data here"
Msgbox tester
Run Code Online (Sandbox Code Playgroud)