如何让批处理文件在其所在文件夹内执行处理操作?
解决思路
方法1:通过VBS设置批处理的工作目录
利用WScript.Shell的CurrentDirectory属性,先把工作目录切换到批处理所在的文件夹,再执行批处理,就能让批处理在自身目录下运行。
修改后的代码:
JobNo = InputBox("Input Job Number") strfolder = InputBox("Input the job name: ex. Monthly Statements, or Brochures") ' 拼接批处理的完整路径 batFullPath = "C:\TEST\" & JobNo & " " & strfolder & "\Processing\Suppressions.bat" Set objShell = WScript.CreateObject("WScript.Shell") ' 提取批处理所在的目录(截取路径中最后一个反斜杠之前的部分) batDirectory = Left(batFullPath, InStrRev(batFullPath, "\")) ' 设置当前工作目录为批处理所在文件夹 objShell.CurrentDirectory = batDirectory ' 执行批处理 objShell.Run """" & batFullPath & """"
方法2:通过cmd命令切换目录后执行
直接在Run方法里调用cmd,先切换到批处理所在目录再执行,同样不用修改批处理文件:
修改后的代码:
JobNo = InputBox("Input Job Number") strfolder = InputBox("Input the job name: ex. Monthly Statements, or Brochures") batFullPath = "C:\TEST\" & JobNo & " " & strfolder & "\Processing\Suppressions.bat" batDirectory = Left(batFullPath, InStrRev(batFullPath, "\")) Set objShell = WScript.CreateObject("WScript.Shell") ' 用cmd /c 先切换目录再运行批处理 objShell.Run "cmd /c cd /d """ & batDirectory & """ && """ & batFullPath & """"
这两种方法都不用改动批处理文件本身,靠VBS控制执行环境,就能让批处理在自己所在的文件夹里运行,解决了从桌面路径执行的问题。
内容的提问来源于stack exchange,提问作者John D
相关产品推荐
相关产品推荐

