Batch file 如何在批处理文件中保存vbs一个命令多行
我想将vbs文件保存在批处理文件中,如下所示:Batch file 如何在批处理文件中保存vbs一个命令多行,batch-file,command-line,vbscript,save,Batch File,Command Line,Vbscript,Save,我想将vbs文件保存在批处理文件中,如下所示: echo set shell = createobject("wscript.shell") wscript.sleep(1000) shell.sendkeys("blablabla") Shell.SendKeys "{Enter}" wscript.sleep(1000) >"c:\folder\blablabla.vbs" echo set shell = createobject^("wscript.shell"^) : wscr
echo set shell = createobject("wscript.shell")
wscript.sleep(1000)
shell.sendkeys("blablabla")
Shell.SendKeys "{Enter}"
wscript.sleep(1000) >"c:\folder\blablabla.vbs"
echo set shell = createobject^("wscript.shell"^) : wscript.sleep^(1000^) : shell.sendkeys^("blablabla"^) : Shell.SendKeys "{Enter}" : wscript.sleep^(1000^) >"c:\folder\blablabla.vbs"
但是批处理文件不起作用。如果我这样做(如果我在一行中键入vbs代码):
那么vbs文件就不起作用了。
因此,我的问题是:如何正确保存vbs文件,而不使批处理文件认为我希望他执行多个命令
第一选择:
Agroupate使用agroupation运算符()
,并使用^
在代码中转义冲突的Batch
运算符
(
echo set shell = createobject^("wscript.shell"^)
echo wscript.sleep^(1000^)
echo shell.sendkeys^("blablabla"^)
echo Shell.SendKeys "{Enter}"
echo wscript.sleep^(1000^)
)>"c:\folder\blablabla.vbs"
第二选择
要连接VBScript
中的指令,需要使用:
运算符,然后一行代码应如下所示:
echo set shell = createobject("wscript.shell")
wscript.sleep(1000)
shell.sendkeys("blablabla")
Shell.SendKeys "{Enter}"
wscript.sleep(1000) >"c:\folder\blablabla.vbs"
echo set shell = createobject^("wscript.shell"^) : wscript.sleep^(1000^) : shell.sendkeys^("blablabla"^) : Shell.SendKeys "{Enter}" : wscript.sleep^(1000^) >"c:\folder\blablabla.vbs"
这是另一种方法。
:
在VBS中是无害的,它的工作方式类似于批处理中的注释。特别好的是,您不必担心转义任何VBS代码
我选择了:
,因为它不太可能出现在批处理脚本的其他地方;而:
用于批标签,而:
经常用作批注释
::set shell=createobject(“wscript.shell”)
::wscript.sleep(1000)
::shell.sendkeys(“blabla”)
::Shell.SendKeys“{Enter}”
::wscript.sleep(1000)
findstr/b::“%~f0”>“c:\folder\blablabla.vbs”
这里还有一些选项,它们只需要一个字符串来标记VBS的开头,因此如果处理大量VBS,它们可能更容易编写。确保在VBS之前有
退出/b
第二个选项速度较慢,它将按当前写入的方式剥离空行
@echo关闭
setlocal
设置“vbs=test.vbs”
对于/f“delims=:”%%N in('findstr/nb:::begin VBS”“%~f0“),请设置“skip=%%N”
(对于/f usebackq^skip^=%skip%^delims^=^eol^=%A,在(“%$f0”)中执行echo%%A)>%vbs%
cscript/nologo“%vbs%”
删除“%vbs%”
退出/b
::开始VBS
set shell=createobject(“wscript.shell”)
wscript.sleep(1000)
shell.sendkeys(“dir*.h*”)
Shell.SendKeys“{Enter}”
wscript.sleep(1000)
第三个选项速度很快,但更多选项会将选项卡转换为一串空格
@echo关闭
setlocal
设置“vbs=test.vbs”
对于/f“delims=:”%%N in('findstr/nb:::begin VBS”“%~f0“),请设置“skip=%%N”
更多+%skip%“%~f0”>%vbs%
cscript/nologo“%vbs%”
删除“%vbs%”
退出/b
::开始VBS
set shell=createobject(“wscript.shell”)
wscript.sleep(1000)
shell.sendkeys(“dir*.h*”)
Shell.SendKeys“{Enter}”
wscript.sleep(1000)
非常感谢您的快速回答。我有一个新问题。保存的vbs文件也可以工作。但是当我打开批处理文件时,它不会启动vbs文件,它只是启动CMD,我不知道为什么,你能帮我吗?不客气,但是由于你没有提供批处理文件的代码,你的意思是,试图调用vbs,那么我不知道问题出在哪里,也许你会考虑把这个答案标记为“接受”,并对你的新问题提出一个新的问题,我不理解你的新问题抱歉,谢谢阅读和原谅我的英语。好吧,我想我把这个标记为一个被接受的。我写了一个新问题,希望你能看到发生了什么。如果你愿意,你可以自己试试。