将闪存驱动器设置为变量

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,它已经是一个变量,保存着正在运行的批处理文件的盘符。如果您想将其保存为名为@9​​87654329@ 的变量,请使用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% 变量的值。

以上是关于将闪存驱动器设置为变量的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟 USB 闪存驱动器并同时读取数据

UDEV - 在 USB 闪存驱动器插入上运行程序 [关闭]

重新启动 Windows 8 并从 USB 闪存驱动器启动的代码

如何查看Mac闪存存储设备的使用寿命

USB闪存驱动器制造商序列号

SSD 是什么