Batch file 如何在批处理文件中保存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

我想将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"^) : 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,那么我不知道问题出在哪里,也许你会考虑把这个答案标记为“接受”,并对你的新问题提出一个新的问题,我不理解你的新问题抱歉,谢谢阅读和原谅我的英语。好吧,我想我把这个标记为一个被接受的。我写了一个新问题,希望你能看到发生了什么。如果你愿意,你可以自己试试。