运行 批处理文件中的 VBScript 代码

Run VBScript code in a Batch file

假设我有一个批处理脚本,我想使用 VBScript 来执行某项任务。它是 VBScript 中的一个衬里,我宁愿只有一个文件(批处理脚本)而没有任何临时文件。这可能吗?

我知道如何从批处理脚本创建一个 VBScript 文件,运行 然后删除它,但我不想这样做,因为这涉及创建一个额外的文件。

这里有两种方法 - 您可以查看更多 here。根据我的最佳方法(将整个代码保存为 .bat):

<!-- :
@echo off
echo "Batch code here"
cscript //nologo "%~f0?.wsf" %*
exit /b
-->
<job><script language="VBScript">
  WScript.Echo "VBScript output called by batch"
  'Uncoment if you want to test the command line arguments
  'WScript.Echo (WScript.Arguments.Item(0))
</script></job>

您也可以使用 mshta(请注意,这是基于浏览器的 vbscript,您无权访问 WScript 对象):

@echo off
setlocal
:: Define simple batch "macros" to implement VBS within batch
set "vbsBegin=mshta vbscript:Execute("createobject(""scripting.filesystemobject"")"
set "vbsBegin=%vbsBegin%.GetStandardStream(1).write("
set ^"vbsEnd=):close"^)"

:: float numbers math
%vbsBegin% 2.5+3.1 %vbsEnd% |more

for /f %%a in ('%vbsBegin% 2.5+3.1 %vbsEnd%') do set result=%%a
echo %result%

你可以使用这个

<!-- : Begin batch script
@echo off
cscript //nologo "%~f0?.wsf" %1
exit /b

----- Begin wsf script --->
<job><script language="VBScript">
:: Remove this line and Write the Vbscript code here or it will not work
</script></job>