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

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

这是我的文件目录,WindosActive.bat脚本会读取WindosSerial.ini中的文件信息,但是脚本中的有些命令要以管理员的身份才可以正常运行。如果直接右键管理员运行的目录会定位到C:\Windows\system32。然后提示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

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

原文地址:https://www.cnblogs.com/feiquan/p/10368960.html

时间: 2024-07-30 03:00:53

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

设置MySQL使用非SYSTEM身份运行时,需要修改的磁盘权限

问题 设置MySQL使用非SYSTEM身份运行时,需要修改的磁盘权限 解决方案 *注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改.文中提及的权限都是在原有权限上附加的权限. [修改步骤]1.创建用户创建一个名为mysqlusr的用户,设置一个随机密码,密码的长度最好不要少于20位. 2.设置用户的身份将mysqlusr用户加入Guests组,并去掉其它任何的组. 3.设置磁盘权限假设MySQL安装在如下目录中D:\hosting

bat默认以管理员身份运行

在Bat文件内容前插入以下一段代码: @echo off :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag

Runtime(运行时)002-方法欺骗(面向切面编程: 修改原来方法的调用顺序)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #ff2600; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #919191; background-color: #ffffff } p.p3 { margin:

win7操作系统上,批处理文件,直接双击的时候,能运行起来。但是以管理员身份运行的时候,都闪退。请问,这是怎么回事?

问题补充: 批处理中执行的程序与批处理文件在同一个目录中.批处理文件中程序只写了可执行文件名,没有加注其路径. 以管理员身份运行时闪退的原因是,执行批处理中的程序没有找到其路径. 直接双击批处理文件,默认路径是批处理文件所在的路径. 对批处理文件右键以管理员身份运行时,默认路径是c:\windows\system32>

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

windows系统.以管理员身份运行bat文件.文件路径中如果有括号,括号前必须有空格.否则脚本会闪退,不执行脚本命令.例如:E:\a (b)\c.bat ,右键以管理员身份运行,可以执行.E:\a(b)\c.bat,以管理员身份运行,脚本闪退,不执行. 如果用cmd进入到目录中,执行脚本,则以上2个都可以正常运行. 原文地址:https://www.cnblogs.com/Alex-ZJ/p/11041716.html

编写一个BAT脚本协助运维人员遇到问题时候调测数据库是否有效连接成功的操作攻略

简单摘要: 1.内网系统出现故障需要排查 2.运维人员不熟悉数据库操作,没法通过连接数据库和执行SQL语句的方式排查数据库及数据是否正常 3.解决方案:编写一个bat脚本,运维人员双击运行即可.   原文链接: http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=d861e977-87d1-4ac0-ab63-91dacb9ccc9e 背景说明: 车辆管理系统涉及2台服务器: 101:数据

KVC&KVO&运行时

运行时:要先了解程序运行的三个阶段 1.编译阶段:clang将OC代码转换成C++,查看运行机制调用的方法 2.链接阶段:与我们使用到得库文件进行链接 3.运行阶段:我们要谈的运行时主要针对这个阶段,运行时机制类似于执行OC的操作系统,是C&C++混编的 KVC:全称 key value coding KVC底层实现原理其实是消息机制+运行时: 1.先去找属性的setter方法,如果有调用 2.再去找属性名,如果有更改 3.再去找字段(成员变量) 如果有赋值 KVO:全称 key value o

Unity3D脚本学习——运行时类

AssetBundle 类,继承自Object.AssetBundles让你通过WWW类流式加载额外的资源并在运行时实例化它们.AssetBundles通过BuildPipeline.BuildAssetBundle创建. 参见:WWW.assetBundle ,Loading Resources at Runtime ,BuildPipeline.BuildPlayer function Start () { var www = new WWW ("http://myserver/myBund

(转)以超级管理员身份运行bat

(转载自: http://lishirongandcto.blog.163.com/blog/static/17727608020136444757944/   2013-07-04 ) 废话不多说,直接上代码: --------------------------------------------------------------------------------------- @ echo off %1 %2 ver|find "5.">nul&&got