我有一款软件要分发给几个部门,以便安装到 Windows 7 笔记本电脑上。他们从 U 盘安装软件,然后必须运行脚本来正确配置软件。
由于脚本正在更改注册表文件和程序文件,因此需要管理员权限。以管理员身份运行时,它会进入 System32 文件夹,我不再有简单的脚本方式来访问需要从拇指驱动器复制的文件,因为我不确定它将在各种机器上使用哪个驱动器号。以前的安装是在 Windows XP 上,命令窗口文件路径保留在脚本文件夹中。
我在这里发现了类似的问题,并且我已经尝试了相对路径,但它似乎无法在拇指驱动器上找到正确的文件夹,或者我似乎找不到正确的格式化方法。
答案1
%~dp0 是包含批处理文件的路径。
例如:如果您的脚本是 g:\scripts\batch.cmd,那么 %~dp0 相当于 g:\scripts\
因此,如果您的所有文件都在文件夹 g:\scripts\files 中,那么您可以使用 %~dp0files\filename.fileextension 引用它们
另外,在上面的例子中,%~d0 只是驱动器 g:
答案2
你怎么能将你正在处理的位置的完整路径写入临时文本文件 - 这样就可以以管理员身份读取该文件呢?
另外,也许您可以将拇指驱动器的标签设置为唯一的标签,然后在提升为管理员时查找该驱动器标签?
答案3
我的博客上有一个简单的两行解决方案。
http://chienyiing.blogspot.com/2014/04/batch-file-run-as-administrator-changes.html
@setlocal enableextensions
@cd /d "%~dp0"