批处理使用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]] 正如大家所看到的
路径丢失了~~~~ 哈哈 哥在百度上找到解决办法了 共享给大家
高手的解决办法
链接是:
[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]此贴留作备份吧。 "cd /d %~dp0”
——引号需要加上?
页:
[1]