win7中以管理员身份运行bat脚本时,获取当前文件所在目录

DOS编程---如何获取路径(%cd% and %~dp0) 1、获取路径方式 目前本人常用的两种获取路径方法: %cd% %~dp0 各自特点: %cd% :获取的是当前执行命令或bat文件的路径,可变,能在命令行中或bat文件中使用; %~dp0:获取的是当前执行bat文件的路径,内容不可变,而且只能在bat文件中使用; 2、案列 脚本内容:通过type命令显示 rem this is DOS demo script echo off rem %~dp0 is an env variable for DOS,it represents the. 阅读详情

知道windows的bat脚本很强大,但是具体命令向来很少接触,今天在win7上运行自己以前写的一个安装mysql数据库到系统服务的脚本时,遇到一些问题,下面记录一下。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

问题:mysql服务安装脚本在win7下运行失败

原因:win7下,以右键的“以管理员身份运行”默认进入的目录是C:\Windows\System32目录,因此后续的cd Demo_V2.0.4.9命令肯定进入不到正确的目录

解决办法:使用cd /d %~dp0

首先,脚本如下,对具体StartDemo.bat命令不多做解释

cd Demo_V2.0.4.9

cd mysql

@echo off

set MYSQL_HOME=%cd%

net stop "DemoMySql"

call "%MYSQL_HOME%\bin\mysqld.exe" remove DemoMySql

call "%MYSQL_HOME%\bin\mysqld.exe" install DemoMySql --defaults-file="%MYSQL_HOME%\bin\my.ini"

net start "DemoMySql"

cd..

cd..

这个脚本在xp、2000、2003等系统中都可以正常双击运行。在win7系统中双击运行时,会以普通用户身份运行,此时所获取的文件路径的确是当前路径,而不是C:\Windows\System32。但是运行到卸载以及安装DemoMysql的系统服务时,普通用户显然权限是不够的。

于是在StartDemo.bat右键选择“以管理员身份运行”,此时又会出问题,win7可能出于安全问题考虑,此时获得的目录是C:\Windows\System32,于是后面的执行都会出错或者无效。

此时在脚本开始尝试加入命令cd %cd%,来获取当前路径,实验得知,这行语句在xp等系统中有效,但是在win7中依然无效。得到的目录依然是C:\Windows\System32。

上网查了一下才知道要使用cd /d %~dp0命令来获取脚本所在的目录。在脚本最开始添加cd /d %~dp0即可。之后在xp系统上运行此脚本,确认也没有问题。下面对命令中涉及到的参数做一解释。

问题解释一:关于cd的/d参数

关于cd 的/d参数,在cmd中敲入cd /?

可以看到/d参数的解释如下:

使用 /D 命令行开关,除了改变驱动器的当前目录之外,

还可改变当前驱动器。

这句话貌似不太好理解,我做个试验给大家看就明白了:

通常我们在xp系统中打开cmd窗口时,会显示

C:\Documents and Settings\Administrator>

如果我们执行如下命令,发现目录依然还是在C:\Documents and Settings\Administrator

C:\Documents and Settings\Administrator>cd d:\tomcat6.0.18

C:\Documents and Settings\Administrator>

此时,我们键入d:,不但会切换到d盘,而且会切换到d:/tomcat6.0.18的目录

C:\Documents and Settings\Administrator>cd d:\tomcat6.0.18

C:\Documents and Settings\Administrator>d:

D:\tomcat6.0.18>

下面语句我们就能看到/d参数的作用了。发现加了/d参数之后直接切换到d盘的tomcat6.0.18目录了。

C:\Documents and Settings\Administrator>cd /d d:\tomcat6.0.18

D:\tomcat6.0.18>

结论:不加/d参数只能在同一驱动器的目录之间切换,加上/d参数则能在不同驱动器之间的目录之间切换

问题解释二:关于%~dp0的批处理命令的详细解释

对此命令并不清楚,以下内容都来自互联网:

%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录

cd是转到这个目录,不过我觉得cd /d %~dp0 还好些

选项语法:

~0 - 删除任何引号("),扩充 %0

%~f0 - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)

%~d0 - 仅将 %0 扩充到一个驱动器号

%~p0 - 仅将 %0 扩充到一个路径

%~n0 - 仅将 %0 扩充到一个文件名(“n”是name 文件名)

%~x0 - 仅将 %0 扩充到一个文件扩展名

%~s0 - 扩充的路径只含有短名(“s”为Short,短的)

%~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)

%~t0 - 将 %0 扩充到文件的日期/时间(“t”time)

%~z0 - 将 %0 扩充到文件的大小(Size 大小)

%~$PATH:0 - 查找列在路径环境变量的目录,并将 %0 扩充

到找到的第一个完全合格的名称。如果环境变量名

未被定义,或者没有找到文件,此组合键会扩充到

空字符串

可以组合修饰符来得到多重结果:

%~dp0 - 仅将 %0 扩充到一个驱动器号和路径

%~nx0 - 仅将 %0 扩充到一个文件名和扩展名

%~fs0 - 仅将 %0 扩充到一个带有短名的完整路径名

%~dp$PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充

到找到的第一个驱动器号和路径。

%~ftza0 - 将 %0 扩充到类似输出线路的 DIR

%0为当前批处理文件

如果0换成1为第一个文件,2为第2个

****************************************************

%0代指批处理文件自身

%~d0 是指批处理所在的盘符

%~dp0 是盘符加路径

cd %~dp0 就是进入批处理所在目录了

 

原文地址:http://hi.baidu.com/jinshely/blog/item/3e2dc512a928d646f819b8c2.html

转载地址:http://blog.youkuaiyun.com/canba/article/details/6628968

Win10 如何以管理员身份设置开机自启程序(2) 自己水平太菜,对Windows的权限问题一直不是特别了解。之前在《Win10 如何以管理员身份设置开机自启程序(1)》一文中介绍了:通过Windows“任务计划程序”来实现以管理员身份开机自启。但是,但是,遇到一台奇怪的Win10系统,上边的策略行不通。一旦设置管理员运行,就无法成功开机自启。后来瞎蒙出一种方法: (1) 对“A.exe”创建快捷方式“A.lnk” (2) 右键“A.lnk”-> 高 阅读详情

相关推荐

【将.bat命令文件注入Windows 11的开机自启动】

在bat文件的快捷方式上右键单击,然后选择“以管理员身份运行”。在"启动程序"步骤中,点击"浏览"并选择你之前创建的.bat命令文件,然后点击"下一步"。在"任务计划程序库"窗口中,右键点击空白处并选择"创建基本任务"。在"创建基本任务"向导中,输入一个名称和描述,然后点击"下一步"。打开开始菜单并搜索"任务计划程序",然后打开"任务计划程序库"。在"触发器"步骤中,选择"开机时",然后点击"下一步"。在"操作"步骤中,选择"启动程序",然后点击"下一步"。在"确认"步骤中,确认设置,并选择"完成"。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 6655

批处理 cd /d “%~dp0“

批处理 切换到当前目录

Opithecus的博客 7764

Python编程中的%cd%与%dp0的区别

在Python编程中,%cd%和%dp0%是两个常用的特殊变量。这两个变量在功能上有所不同,%cd%用于更改当前工作目录,而%dp0%用于获取批处理文件所在目录路径。根据实际需求,选择使用适当的变量可以更好地处理文件路径和目录操作。命令将当前工作目录更改为C:\目录。最后,再次使用%cd%显示已更改的当前工作目录。在上面的代码中,%~dp0%用于获取批处理文件所在目录的完整路径,并将其存储在。在上面的代码中,%cd%用于获取当前工作目录并进行显示。Python编程中的%cd%与%dp0的区别。

ByteSparkX的博客 856

Bat 批处理脚本中 %cd% 与 %~dp0 区别

%cd% 会动态变化,可能等于文件夹路径,一旦cd 别的目录,那就不一致。

最快的脚步不是跨越,而是继续;最慢的步伐不是缓慢,而是徘徊! 1637

x.reg (效率注册表右键文件夹转到当前路径cmd)

效率注册表右键文件夹转到当前路径cmd

Vivado工程芯片型号更换全流程:从IP更新到生成新bit文件(避坑指南)

本文详细介绍了Vivado工程中更换芯片型号的全流程,包括IP更新、约束文件适配和生成新bit文件的关键步骤。特别针对FPGA开发中常见的兼容性问题提供避坑指南,帮助开发者高效完成芯片迁移,确保设计稳定性和性能优化。

weixin_42549451的博客 297

win7/10中以管理员身份运行bat脚本时,获取当前文件所在目录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33913332的博客 997

COMSOL电弧放电仿真:四场耦合与磁流体建模实战指南

多物理场耦合仿真是现代工程中模拟复杂物理过程的重要手段。电弧本质上是电场、磁场、流场与温度场四场相互耦合的非线性系统,其行为由磁流体力学(MHD)方程描述。通过COMSOL等工具构建电弧模型,可准确预测温度分布、流场结构和电极烧蚀,为开关电器设计、等离子体应用等提供数据支撑。在高压电器开断、电弧切割、激光打孔等工程问题中,高效求解MHD耦合模型是关键。然而,电弧仿真涉及物性参数强非线性、边界条件设置、求解器配置以及移动网格处理等挑战。以二维轴对称电弧模型为例,系统梳理磁流体方程落地、多物理场耦合节点配置、收

weixin_30047059的博客 134

以管理员身份运行bat脚本时,获取当前文件所在目录

以管理员身份运行bat脚本时,获取当前文件所在目录     知道windows的bat脚本很强大,但是具体命令向来很少接触,今天在win7上运行自己以前写的一个安装mysql数据库到系统服务的脚本时,遇到一些问题,下面记录一下。&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;  ...

qwuter的专栏 3932

R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)

本文详细介绍了在R语言环境中将RNA-seq原始计数(raw counts)转换为TPM/FPKM值的完整流程,包含代码实现和常见错误调试技巧。通过具体案例演示如何正确处理基因长度和测序深度因素,实现表达量标准化,为生物信息学分析提供可靠数据基础。特别适合需要进行转录组数据分析的研究人员和实验室技术人员参考。

weixin_28559803的博客 477

031、速度前馈与加速度前馈

摘要: 本文通过追剪机调试案例,阐述了速度前馈和加速度前馈在运动控制中的关键作用。前馈不是高级技巧,而是解决动态响应问题的必要手段:速度前馈通过预测速度变化提前补偿,加速度前馈则针对惯量变化提供力矩补偿。实现时需注意信号平滑处理,避免噪声放大。前馈与PID分工明确,前馈承担主要动态响应,PID处理残余误差。调试应先调前馈再微调PID,前馈增益需计算而非仅凭参数调整,并允许适当残余误差。前馈作为开环补偿不会影响系统稳定性,但需配合平滑的指令生成器使用。(149字)

m0_50546716的博客 281

在cmd/bat脚本中获取当前脚本文件所在目录

Q:在Win7/Win10中以管理员身份运行在cmd/bat脚本时,如何获取当前脚本文件所在目录? 当我们在Win7/Win10中使用鼠标右键的“以管理员身份运行”以管理员身份运行cmd/bat脚本时,系统默认进入的目录是C:\Windows\System32目录,因此cmd脚本文件中的相应命令因路径不对提示找不到要执行的程序文件等提示。 netpay_Service.exe -ins...

木牛的博客 9515

YOLOv8科研探索:HAttention激活更多特征点,真心助你提升细粒度检测精度

如果你在集成中遇到问题,不妨从特征点激活阈值、多尺度融合的逻辑入手,一点点打磨——科研的突破,往往就藏在这些细致的尝试里。想象一下,普通模型可能只关注目标的“大块区域”,而HAttention能让模型同时捕捉到目标的“边缘”“纹理”等细粒度特征点,就像给模型装上了“显微镜”,再小的细节也逃不过它的“眼睛”。比如,小目标的细粒度特征点(如昆虫的触角)和大目标的整体特征点(如昆虫的身体)会被同时考虑,通过注意力权重的分配,让小细节融入全局理解,避免模型“只见树木不见森林”。HAttention通过。

FJN110的博客 79

bat在win7中获取当前路径

bat在win7中获取当前路径 2011年12月30日   知道windows的bat脚本很强大,但是具体命令向来很少接触,今天在win7上运行自己写的一个在开始菜单中增加快捷方式的的脚本时,遇到一些问题,下面记录一下。   问题:增加快捷方式批处理程序在win7下运行失败   原因:win7下,以右键的“以管理员身份运行”默认进入的目录是C:\Windows\System32目录,...

wcvq08wcvq 132

Odoo 入门 | 什么是 Odoo?

Odoo是一套全球开源的ERP/CRM系统,最初的名字为TinyERP,08年5月之后称之为OpenERP,之后又改为Odoo。

洛阳泰山的博客 6207

【GB28181】wvp-GB28181-pro部署安装教程(Ubuntu平台)

初始环境安装。

废人一枚的博客 5080

Windows BAT脚本管理员权限获取:五种方法原理与实战指南

在Windows系统管理与自动化运维中,权限控制是核心安全机制之一。用户账户控制(UAC)通过令牌分离机制,确保标准用户与管理员权限的隔离,这是系统安全的重要防线。理解权限提升原理,对于实现自动化脚本的可靠执行至关重要,尤其在软件部署、系统配置和服务管理等场景。本文聚焦BAT脚本开发中的常见痛点,深入解析MSHTA+VBScript混合、PowerShell单行命令、RUNAS保存凭据、计划任务及EXE封装五种提权方法。其中,MSHTA+VBScript凭借其优秀的系统兼容性,成为跨版本Windows环境下

weixin_33674976的博客 281

node运行项目-Network: unavailable-没有ip地址

vscode运行vue项目后发现Network: unavailable 是什么情况呢?可能有一下三种情况:1.多个网卡原因:打开网络共享中心,把多余的网络禁用掉,只留一个2.在中配置host及public3.系统环境变量问题。

JackieDYH的博客 7539
下一篇: 程序安装报错0x80070660的解决
libocdf
博客等级 码龄16年 544粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值