咱们时常使用bat脚本去处理一些事情,有事bat中的命令须要以管理员的身份运行,可是运行后文件的目录自动定位到了C:\Windows\system32下,而再也不脚本所在的目录下。spa
这是个人文件目录,WindosActive.bat脚本会读取WindosSerial.ini中的文件信息,可是脚本中的有些命令要以管理员的身份才能够正常运行。若是直接右键管理员运行的目录会定位到C:\Windows\system32。而后提示WindosSerial.ini文件不存在。code
咱们用echo %cd% 输出当前目录:xml
那么有没有其余方法呢?blog
使用变量扩充 的方法,读取出当前文件的目录,而后cd过去:字符串
@echo off if not "%OS%"=="Windows_NT" exit title WindosActive echo 当前目录:%cd% echo 变量扩充: %~dp0 cd /D %~dp0 echo 更改后的目录:%cd% pause
有关其余变量扩充的知识:it
@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
其中的变量扩充能够随意组合。class