批处理之家's Archiver

sirliu 发表于 2011-2-7 20:25

批处理使用win7管理权限运行后路径丢失怎样解决?

开启UAC的win7环境,有些操作需要管理权限,但是右键批处理,使用管理员权限运行批处理后,运行出错,具体情况是批处理启动时所在的路径丢失。
请测试
[size=4][color=#FF0000]批处理测试代码:[/color][/size][code]@echo off
echo %cd%
pause>nul[/code][size=4][color=#FF0000]批处理启动路径:[/color][/size]
任意非C:\Windows\System32\目录,意思就是不要放在C:\Windows\System32\目录里,不然就没有测试意义了。

[size=4][color=#FF0000]测试方法:[/color][/size]
[size=4][color=#FF0000][i]第一步:[/i][/color][/size]
以普通方式启动批处理——即双击运行批处理。结果:
[attach]3425[/attach]



[size=4][color=#FF0000][i]第二步:[/i][/color][/size]
右键批处理使用管理员权限运行批处理。
结果:
[attach]3426[/attach]

[[i] 本帖最后由 sirliu 于 2011-2-7 20:39 编辑 [/i]]

sirliu 发表于 2011-2-7 20:33

正如大家所看到的
路径丢失了~~~~

sirliu 发表于 2011-2-7 20:39

哈哈  哥在百度上找到解决办法了 共享给大家
高手的解决办法
链接是:
[url]http://www.cnblogs.com/TianFang/archive/2010/04/29/1724505.html[/url][code]一般来说,批处理文件处理相对路径的时候,起始位置是bat文件所在的目录,比如在D:\XX目录下执行bat文件,所有相对目录的操作都会以D:\XX下执行。

但是有些命令需要管理员权限,右键选择以管理员身份运行时后,起始位置则为C:\Windows\system32,这时候往往不是我们所想要的,

一种解决解决办法是在批处理的行首加一句"cd D:\XX”进入该目录,以修改其当前位置,但这样需要在批处理文件中加入绝对路径,如果把bat文件移动到其它位置就无法使用了,此时一种更好的方式是用"cd /d %~dp0”代替"cd D:\XX”。



综上所述,在写bat文件的时候,不管是否需要用到管理员权限,最好在行首加一句"cd /d %~dp0",以统一文件的起始目录。[/code]此贴留作备份吧。

c_mang 发表于 2013-3-7 13:32

"cd /d %~dp0”
——引号需要加上?

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.