Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理文件中运行VBScript代码_Batch File_Vbscript_Embed - Fatal编程技术网

Batch file 在批处理文件中运行VBScript代码

Batch file 在批处理文件中运行VBScript代码,batch-file,vbscript,embed,Batch File,Vbscript,Embed,假设我有一个批处理脚本,我想使用VBScript来执行某项任务。它是VBScript中的一行程序,我希望只有一个文件(即批处理脚本),而没有任何临时文件。这可能吗 我知道如何从批处理脚本创建VBScript文件,运行它,然后删除它,但我不想这样做,因为这涉及到创建额外的文件。这里有两种方法-您可以查看更多信息。我认为最好的方法(将下面的整个代码保存为.bat): 可能的重复我能用自己的代码替换WScript.Echo行吗?我想我会的。我这样做了,并将其添加到我自己的脚本中,它说它需要一个有效的名

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


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

这里有两种方法-您可以查看更多信息。我认为最好的方法(将下面的整个代码保存为.bat):


可能的重复我能用自己的代码替换WScript.Echo行吗?我想我会的。我这样做了,并将其添加到我自己的脚本中,它说它需要一个有效的名称。我怀疑问题出在我添加的代码上,但是代码的调用方式。@ChristianSirolli-是的,你可以。错误是否来自vbscript代码?可能它需要一些命令行参数?我像在普通VBScript中一样使用msgbox命令,我知道它在普通VBScript中工作。该错误出现在命令行控制台中,就像正常的命令行错误一样,我相信该错误是在运行cscript行时抛出的script@ChristianSirolli-对不起,有一段时间没有检查SO<代码>%~f0是批处理文件的路径。使用vbscript,您可以使用
Wscript.ScriptFullName
。如果您以管理员身份运行它,它将在
system32
中启动。您可以尝试在脚本开头设置
cd/d“%~dp0”
,以确保脚本所在的目录。
<!-- :
@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>
@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%