问题
在编写批处理时,如果写绝对路径,对后期维护非常不友好,所以尽量写成相对路径。
在同一个目录下,两个批处理相互调用,直接写文件名就可以,但是这里一个问题是,有些批处理功能需要使用管理员身份运行,如果使用管理员身份运行,则直接报错
举个例子
在同目录下有两个bat批处理
echoFun.bat 接收参数,拼接并输出
run.bat 传入参数
echoFun.bat
@echo off
SET a1=%1
SET a2=%2
SET a3=%3
echo %a1%%a2%%a3%
run.bat
@echo off
call echoFun.bat 22 33 44
pause
直接双击run.bat运行是没有问题的
但如果“以管理员身份运行”
使用管理员身份运行,直接报错,因为使用管理员身份运行,程序的起始位置为C:\Windows\System32
解决方法
在批处理开头添加cd /d %~dp0,意思是进入该脚本目录
cd /d %~dp0
在编写批处理脚本时,为了使用相对路径,所有的批处理都加上 cd /d %~dp0
扩展
以管理员身份运行的方法,也可以使用代码,在批处理开头添加以下代码,然后双击批处理运行即可
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
【bat】bat批处理 以管理员身份运行代码_GreAmbWang的博客-CSDN博客