请教bat脚本隐藏执行中 @if "%1" == "h" goto begin,什么时候这个1%才会是=h ?

如果我在1.bat中call 2.bat,命令语句是call 2.bat aa,aa是参数。那么如果在2.bat中有语句 @if "%1" == "h" goto begin,那么这个第一个参数到底是什么?
谢谢。
其实主要是对这段代码不解,我是希望能够后台运行脚本,感觉只需要这一句mshta vbscript:createobject就够了,为什么开始要判断这个"%1" == "h" ?
@if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
.......

%1就是您call 2.bat aa中的aa

也就是说脚本文件后面跟上的参数,依次从1排到9

演示代码
test.bat
内容为
echo 参数1:%1
echo 参数2:%2
echo 参数3:%3
echo 参数4:%4
echo 参数5:%5
echo 参数6:%6
echo 参数7:%7
echo 参数8:%8
echo 参数9:%9
pause

执行命令
call test.bat A B C D E F G H I

您将会看到的内容,就知道了这些代码的用法了。追问

@if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
.......
那这段代码呢?那意思是这个1%是我传的参数?那我感觉这么写根本就没有必要啊。
这个是我在网上找的代码。我只是想找一个方法实现后台运行脚本,但是网上都是这样写的,所以我就很疑惑。为什么首先要做一个判断 "%1" == "h"。

追答

这段代码中的%1调取的值其实是mshta那段里面的

mshta那段其实就是利用vbs代码来重新运行当前脚本,运行的时候加了一个h的参数。那么重新运行后%1就得到了值,这时就需要判断一下%1的值是否等于h,如果是,那么直接跳转到begin那个标签那可是执行命令,如果不等于,那么就重新执行重启脚本的命令。

所以先判断要放在执行重启脚本命令的前面。如果不加这段或放后面,那么您的脚本将会无限重启。进入死循环。

您觉得没必要,那是因为您的2.bat是通过其它脚本调用的,调用时还加了参数,所以导致这里的%1无效了,但重启脚本后,又会导致其它脚本传值时的参数丢失。

如果您使用其它脚本调用2.bat,且需要实现隐藏。

那么请在其它脚本中直接写
mshta vbscript:createobject("wscript.shell").run("2.bat aa",0)(window.close)

2.bat中就无需加隐藏运行的代码了。

温馨提示:内容为网友见解,仅供参考
无其他回答

...%1" == "h" goto begin,什么时候这个1%才会是=h ?
也就是说脚本文件后面跟上的参数,依次从1排到9 演示代码 test.bat 内容为 echo 参数1:%1 echo 参数2:%2 echo 参数3:%3 echo 参数4:%4 echo 参数5:%5 echo 参数6:%6 echo 参数7:%7 echo 参数8:%8 echo 参数9:%9 pause 执行命令 call test.bat A B C D E F G H I...

if "%1" == "h" goto begin
判断 批处理的命令行参数是否等于h,

Windows bat 运行 vbs文件,怎样隐藏执行过程中的窗口
1 start mshta vbscript:createobject("wscript.shell").run("""%~0"" ::",0)(window.close)&&exit第一行新起一行,贴进去

运行bat时隐藏cmd窗口
可以用下面两种方法来实现隐藏cmd窗口:1、直接在 bat 文件最前边加上以下内容:echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin 2、新建一个记事本,里面输入:CreateObject("WScript.Shell").Run "cmd \/...

如何使用批处理隐蔽窗口?
方法一 bat里有隐藏窗口的命令,很简单,只需要在代码头部加一段代码就可以了。echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin ::下面是你自己的代码。方法二 在你批处理的相同目录下新建一个记事本,...

求BAT隐臧运行的指令(应该是以 if 开头的)
echo off if "%1"=="h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin ::以下为批处理命令 pause

DOS窗口的DOS窗口隐藏
@echo off if %1==h goto begin start mshta vbscript:createobject(wscript.shell).run(%~nx0 h,0)(window.close)&&exit :begin::以下为正常批处理命令,不可含有pause set\/p等交互命令pause2.利用vbs脚本实现隐藏。缺点:调用麻烦点。优点:基本看不到痕迹(非绝对的,指一般用户)HideRun.vbs...

批处理隐藏运行框
mst脚本语言就是相当于 html 应用程序,不管用什么脚本语言,只要能创建 windows系统提供的 wscript.shell这个空间,用这个空间里面的run方法打开 我们也可以用mta脚本语言里面JavaScript一样能行 echo off ::批处理隐藏运行 if "%1"=="h" goto begin mshta "javascript:new ActiveXObject('wscript.shell...

请问大师:在批处理文件里加了隐藏对话框的代码后提示:当前角本发生错误...
if "%1"=="h" goto begin mshta vbscript:createobject("wscript.shell").run("%~s0 h",0)(window.close)&exit :begin

谁可以告诉我隐藏bat窗口的命令,要那种可以直接写在那个bat文件里的不...
另存为vbs文件即可,其中d:\\yy.bat是你需要运行的bat文件的路径。方法二:用文本文档打开bat文件,在开头处写入 echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM 这个方法运行bat,还是闪了一下...

相似回答