之前写了一段vbs调用bat的代码,需要将vbs中的文件夹名称以参数的形式传递给bat,今天在使用过程中发现:当文件夹名称中含有空格的时候,bat会截取空格之前的部分。比如,当前文件夹
C:\Program Files
,vbs代码如下:
set ws1=wscript.createobject("wscript.shell")
mulu1=ws1.CurrentDirectory
a1=Ws1.run("%USERPROFILE%\Gzidingyi\tupianshouji1.bat "&mulu1&"",0)
在vbs中,
mulu1
要获取当前文件夹C:\Program Files
的名称,并以字符串的形式将文件夹名称传递给bat。bat代码如下:
set lujing1=%1
在调试的过程中发现,bat中
lujing1
获得的字符串不是C:\Program Files
,而是C:\Program
。然后在网上看到了在vbs中可以用两个双引号代替引号的办法,这个其实在vba中也用过,两个连续的双引号在字符串中表示一个双引号。于是将vbs代码改成下面的形式:
set ws1=wscript.createobject("wscript.shell")
mulu1=ws1.CurrentDirectory
a1=Ws1.run("%USERPROFILE%\Gzidingyi\tupianshouji1.bat "
""
&mulu1&
游戏名字空白代码大全""
"",0)
重新调试后,发现bat中
lujing1
仍然不是C:\Program Files
,而是"C:\Program Files"
,多了一对双引号,那是不是加一对双引号就够了呢?换成下面的形式试试:
a1=Ws1.run("%USERPROFILE%\Gzidingyi\tupianshouji1.bat "
"
&mulu1&
"
"",0)
这次vbs直接报错了。所以又回到两对双引号的形式上来,既然vbs已经尽力了,下来再改bat这边。
set lujing1=%1
后,只需要去掉两侧的双引号就行了。于是将代码改成下面的形式:
set lujing1=%1
set lujing1=%lujing1:~1,-1%
经测试,这种办法是可行的。