将闪存驱动器设置为变量
Posted
技术标签:
【中文标题】将闪存驱动器设置为变量【英文标题】:Setting Flash drive as a variable 【发布时间】:2021-08-21 21:19:52 【问题描述】:我有一个很长的脚本,其中包含我们捐赠给 United Way 的笔记本电脑的许多不同信息,并且由于我必须以管理员身份运行命令。
但是当我将 set drive=%cd:~0,3%
设置为 C:\Windows\System32 而不是我正在运行的闪存驱动器时。
有人知道如何获取所需的正确信息吗?
我在这里和谷歌上看过,没有什么真正符合这个问题的。
set drive=%cd:~0,3%
这是更多代码,因此您可以看到我要做什么。
set drive=%cd:~0,3%
for /F "skip=2 tokens=2 delims=," %%A in ('wmic systemenclosure get serialnumber /FORMAT:csv') do (set "serial=%%A") mkdir %cd%\Computers\%Serial%\
【问题讨论】:
在使用set drive=%cd:~0,3%
之前,您是否包含CD /D "%~dp0"
以确保批处理实际上是从闪存驱动器执行的?注意/D
开关 - 从一个驱动器更改为另一个驱动器时需要它。
当然你可以使用%~d0
,它已经是一个变量,保存着正在运行的批处理文件的盘符。如果您想将其保存为名为@987654329@ 的变量,请使用Set "drive=%~d0"
。
我都试过了,当我右键单击并以管理员身份运行时,它仍然回显 C:\Windows\System32.......
您得到的建议并未回显\System32
目录的完整路径,因为这两个cmets 中的任何一个都不会使用%cd%
。因此,请准确发布问题批处理文件中包含的内容,确保 echo
不是 off
,从命令提示符窗口运行它,使用“以管理员身份运行”选项打开,并发布完整的输出。
如果我右键单击批处理文件并选择以管理员身份运行,它会更改为 \system32。我猜是因为我在唤起管理员和它的开放方式........
【参考方案1】:
我找到了答案。 这对我有用。
打开注册表编辑器并转到此处:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
将 EnableLUA 更改为 0
重启电脑。
感谢大家的帮助
【讨论】:
这并不能回答或解决您的问题。 EnableLUA 所做的只是在程序尝试修改其设置时通知用户,它本质上是 UAC 通知。在启动需要完整管理员访问令牌的程序或任务之前,Windows 会提示您提供有效本地管理员帐户的同意或凭据。但是,由于您已经使用以管理员身份运行来调用此脚本,因此它所做的只是在您调用该脚本时控制通知。它不会影响该脚本中任何代码的执行,尤其是%0
或%CD%
变量的值。以上是关于将闪存驱动器设置为变量的主要内容,如果未能解决你的问题,请参考以下文章
UDEV - 在 USB 闪存驱动器插入上运行程序 [关闭]