我们时常使用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:
echo.
echo 组合扩展:
echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小
echo %~dpnxatz0
echo.
echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小+ 短名
echo %~dpnxatzs0
echo. pause

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

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

  1. bat默认以管理员身份运行

    在Bat文件内容前插入以下一段代码: @echo off :: BatchGotAdmin :------------------------------------- REM --> Chec ...

  2. java运行时could not open ........jvm.cfg问题的解决

    我相信这个问题肯定让不少人头疼.小编也纠结了将近3个小时的时间,终于弄明白这是怎么回事并且解决 java都知道时运行命令,不能打开...jvm.cfg很明显是jre虚拟机出现了问题(要么时jre的路径 ...

  3. App_Code目录类文件无法被调用的解决方法

    1.选中类文件,在属性中的“生成操作”默认的“内容”改为“编译”就可以了. 2.重新生成解决方案

  4. 允许IIS下载无后缀文件及“请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。”的解决方法

    1)增加MIME类型 ,如下 application/octet-stream 2)注意是"." , ".*"则适用于任何有文件后缀时使用,无后缀请不要加*

  5. .net 创建计划任务开机后自动以管理员身份启动运行 win7 ~ win10

    假如要启动 this.exe.以下逻辑中会启动先后关联启动三个实例分别是ABC.先启动第一个实例A,A启动实例B,B启动实例C. 要求: 1.如果没有以管理员权限运行,则请求管理员权限运行,即使没有请 ...

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

    简单摘要: 1.内网系统出现故障需要排查 2.运维人员不熟悉数据库操作,没法通过连接数据库和执行SQL语句的方式排查数据库及数据是否正常 3.解决方案:编写一个bat脚本,运维人员双击运行即可.   ...

  7. .Net Core vs .Net Framework 如何为一个应用程序选择一个运行时

    .Net Core是下一件大事吗?我已经使用了一段时间了,我倾向认为它是.事实上,我们推测,在2018年,对这项技术熟练的开发人员将会有巨大的需求.但是它和.Net Framework的区别是什么?你 ...

  8. KVC&KVO&运行时

    运行时:要先了解程序运行的三个阶段 1.编译阶段:clang将OC代码转换成C++,查看运行机制调用的方法 2.链接阶段:与我们使用到得库文件进行链接 3.运行阶段:我们要谈的运行时主要针对这个阶段, ...

  9. 让bat文件自动以管理员身份运行

    · 让bat文件自动以管理员身份运行 如何让bat文件自动以管理员身份运行,将这段写在bat文件的前头即可 : %1 mshta vbscript:CreateObject("Shell.A ...

随机推荐

  1. Android/Linux Thermal Governor之IPA分析与使用

    IPA(Intelligent Power Allocator)模型的核心是利用PID控制器,Thermal Zone的温度作为输入,可分配功耗值作为输出,调节Allocator的频率和电压值. 由P ...

  2. VirtualBox不能为虚拟电脑打开一个新任务——The VirtualBox kernel modules do not match this version of VirtualBox

    本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=608 一.问题产生的环境 物理机操作系统:Ubuntu 17.10 (Ubuntu版本查看命令: cat /etc/ ...

  3. InnoDB基本特性

    Ⅰ.double write 目的:保证数据写入的可靠性 小知识: 什么是partial write? 16k的page只写入了4k,6k,8k,12k就断掉了的情况 corrupt的page就是pa ...

  4. ThinkPHP5+Apicloud+vue商城APP实战

    ThinkPHP5+Apicoud+vue商城APP实战 目录 章节1:项目概述 课时1apicloud平台介绍.04:38 课时2知识体系架构介绍.16:10 章节2:apicloud50分钟快速入 ...

  5. 微信小程序开发之formId使用(模板消息)

    基于微信小程序的模板消息:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验.模板推送位置:服务通知模板下发条件:用户本人在微信体系内与页面有交互 ...

  6. Ubuntu配置SecureCRT登录

    1. 命令行切换到root用户 备注:ubuntu默认root用户没有设置密码,切换需要首先设置密码 sudo passwd root 按照提示输入当前用户密码 按照提示输入要设置的root用户密码 ...

  7. java中读取配置文件ResourceBundle和Properties两种方式比较

    今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...

  8. SDOI2017 BZOJ 4820 硬币游戏 解题报告

    写在前面 此题网上存在大量题解,但本人太菜了,看了不下10篇均未看懂,只好自己冷静分析了.本文将严格详细地论述算法(避免一切意会和玄学),因此可能会比其它题解更加理论化一些,希望能对像我一样看了其它题 ...

  9. tomcat设置直接通过域名访问项目(不需要接 /项目名)

    本文转自 : https://blog.csdn.net/qq_33647275/article/details/52585489 效果图 打开 tomcat - ->conf- ->se ...

  10. laravel5.5解决小程序登陆态的问题

    修改一个文件 : vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php 找到getSession()方 ...