我们时常使用bat脚本去处理一些事情,有事bat中的命令需要以管理员的身份运行,但是运行后文件的目录自动定位到了C:\Windows\system32下,而不再脚本所在的目录下,这就会提示找不到指定路径.
针对此问题,我们可以使用"变量扩充"的方法来解决,读取当前文件的目录,然后cd过去:
@echo off
if not "%OS%"=="Windows_NT" exit
title WindosActive
echo 当前目录:%cd%
echo 变量扩充: %~dp0
cd /D %~dp0
echo 更改后的目录:%cd%
pause
其他变量扩充的知识:
@echo off
if not "%OS%"=="Windows_NT" exit
title WindosActive
echo.
echo 将 ^%%I 扩充到一个完全合格的路径名
echo %~f0
echo.
echo 仅将 ^%%I 扩充到一个驱动器号
echo %~d0
echo.
echo 仅将 ^%%I 扩充到一个路径
echo %~p0
echo.
echo 仅将 ^%%I 扩充到一个驱动器和路径
echo %~dp0
echo.
echo 仅将 ^%%I 扩充到一个文件名
echo %~n0
echo.
echo 仅将 ^%%I 扩充到一个文件扩展名
echo %~x0
echo.
echo 扩充的路径只含有短名
echo %~s0
echo.
echo 将 ^%%I 扩充到文件的文件属性
echo %~a0
echo.
echo 将 ^%%I 扩充到文件的日期/时间
echo %~t0
echo.
echo 将 ^%%I 扩充到文件的大小
echo %~z0
echo.
echo 查找列在路径环境变量的目录,并将 ^%%I 扩充到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串
echo %~$PATH:0
echo.
echo 组合扩展:
echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小
echo %~dpnxatz0
echo.
echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小+ 短名
echo %~dpnxatzs0
echo.
pause
其中的变量扩充可以随意组合。