之前写了一段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%
经测试,这种办法是可行的。