bat脚本以管理员身份运行时,目录没有定位到当前目录问题的解决方法

Posted feiquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat脚本以管理员身份运行时,目录没有定位到当前目录问题的解决方法相关的知识,希望对你有一定的参考价值。

我们时常使用bat脚本去处理一些事情,有事bat中的命令需要以管理员的身份运行,但是运行后文件的目录自动定位到了C:Windowssystem32下,而不再脚本所在的目录下。

技术图片

这是我的文件目录,WindosActive.bat脚本会读取WindosSerial.ini中的文件信息,但是脚本中的有些命令要以管理员的身份才可以正常运行。如果直接右键管理员运行的目录会定位到C:Windowssystem32。然后提示WindosSerial.ini文件不存在。

我们用echo %cd% 输出当前目录:

技术图片

那么有没有其他方法呢?

使用变量扩充 的方法,读取出当前文件的目录,然后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

技术图片

其中的变量扩充可以随意组合。

以上是关于bat脚本以管理员身份运行时,目录没有定位到当前目录问题的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

windows系统,管理员身份运行bat文件,闪退。

win 10怎么以管理员权限启动bat脚本

以管理员身份运行.bat

bat文件成功运行但是会弹出找不到文件

win7 bat文件默认管理员权限运行,这怎么做到?

写了一个bat脚本,用来启动windows服务,系统是windows7.每次运行这个脚本都要右击选择以管理员身份运行。