Batch file 批处理文件分配驱动器号

Batch file 批处理文件分配驱动器号,batch-file,assign,drive,drive-letter,Batch File,Assign,Drive,Drive Letter,我发现这是可行的,并添加了关闭和重新启动资源管理器以反映驱动器更改 我无法将其调整为允许按驱动器号而不是驱动器描述进行搜索 我之所以需要更改驱动器号,是因为闪存介质中的电子表格需要锁定到一个特定的锁定目录,在这个目录中,用户错误要低得多 这是较大批处理文件的一小部分,该批处理文件在允许访问其中的文件夹之前,会检查当前驱动器的字母分配是否正确 :更改字母 cls @呼应 setlocal echo键入驱动器的名称,而不是字母! 设置/p标签= 设置驱动器=W 设置确认=1 定容= 设置卷文件=%T

我发现这是可行的,并添加了关闭和重新启动资源管理器以反映驱动器更改

我无法将其调整为允许按驱动器号而不是驱动器描述进行搜索

我之所以需要更改驱动器号,是因为闪存介质中的电子表格需要锁定到一个特定的锁定目录,在这个目录中,用户错误要低得多

这是较大批处理文件的一小部分,该批处理文件在允许访问其中的文件夹之前,会检查当前驱动器的字母分配是否正确

:更改字母
cls
@呼应
setlocal
echo键入驱动器的名称,而不是字母!
设置/p标签=
设置驱动器=W
设置确认=1
定容=
设置卷文件=%Temp%\Volumes.txt
设置DiskPartFile=%Temp%\DiskPart.txt
正在检索卷信息。。。
回显列表卷| diskpart.exe |更多+5 |查找/v“diskpart>”>%VolumesFile%
对于('类型“%VolumesFile%”中的/f“tokens=2”%%a^查找/i“%Label%”)do(设置卷=%%a)
如果“%Volume%”==“”(
未找到标签为“%label%”的卷;现有卷:
键入“%VolumesFile%”
走吧
)
>%DiskPartFile%echo选择卷%volume%
>>%DiskPartFile%echo分配字母%Drive%
>>%DiskPartFile%echo退出
如果“%Confirm%”等于“0”则转到指定信函
回响
找到了以下卷:
键入“%VolumesFile%”
回显“卷%Volume%”将被分配驱动器号“%drive%”。
回显将执行以下diskpart脚本:
键入“%DiskPartFile%”
回响
设置响应=N
设置/p“响应=继续[y/N]?”
如果/i不是“%Response%”,则=Y(
回音操作已取消。
走吧
)
:转让信
回显设置卷%volume%的驱动器号“%drive%”。。。
diskpart.exe/s“%DiskPartFile%”
回音完毕。
:离开
cls
光盘\
超时/t5
taskkill/f/im explorer.exe
超时/t3
cls
光盘\
启动explorer.exe
如果存在“%VolumesFile%”删除“%VolumesFile%”
如果存在“%DiskPartFile%”删除“%DiskPartFile%”
标签W:LoganHayLLC
超时/t4
启动W:\FileAccess.bat
出口

问题是
diskpart
始终需要管理员权限才能运行,因此最好尽可能避免使用。此外,如果您将脚本留在闪存驱动器上,则无论如何都无法在运行时更改驱动器盘符,因为驱动器上始终有一个打开的句柄,因此无法卸载。如果强制卸载,则脚本也将停止运行

另一个问题是,您不知道用户是否输入了正确的驱动器号。如果他们输入一个硬盘或另一个闪存驱动器的字母怎么办

最好保持驱动器盘符不变,然后将驱动器装入另一个驱动器。您可以改为在批处理文件中使用(可以由任何用户运行)并装载包含该批处理文件的驱动器

@echo关闭
cls
回显驱动器号更改工具
回响
请输入您希望分配的字母
set/P“NewLetter=请输入您希望分配的字母:”
如果“%NewLetter:~1%”==“如果不存在%NewLetter%subst%NewLetter%%~d0
如果“%NewLetter:~1%”==“
将检查用户是否只输入了字母而不是更长的字符串,那么如果正在使用该驱动器号,则将检查该驱动器号


如果您将批处理文件放在闪存驱动器的根目录中,您只需使用
subst%NewLetter%。
而不是
%~d0

大家好,请在评论部分继续讨论civil(到目前为止,我已经清理了线程)。Josliber-理解并感谢您的道歉!Compo-我将添加迄今为止我最成功的代码。我很感激你的评论,我还看到你修复了我先前粘贴的代码。谢谢你,因为我说我是新来的,刚刚有足够的理解来正确粘贴代码。@TruckDriverOnPC-将每个单词的第一个字母大写不是正确的英语写作风格。这使得您所写的内容更难阅读。您能解释一下为什么需要为插入的USB分配特定的驱动器号吗?我看不出有必要将其强制分配给
W:
,而不是自动分配给
F:
。脚本应该能够轻松地设置分配给已知标签的驱动器号,而无需执行所有这些操作。请注意,我并不是说你的步骤是错误的,只是似乎需要做很多工作来完成一些可能并不需要的事情。在这种情况下,分配给这个驱动器的唯一字母是一个大写字母W:\以防止用户在他们的PC上有许多闪存驱动器等时出错。我还没有真正考虑过这样安装它。此驱动器将包含许多电子表格,在使用过程中相互调用。这就是为什么我想分配一个驱动器号。希望这能有点道理。此外,为了访问文件,文件夹被隐藏在迷宫中,在迷宫中,访问文件夹的唯一合理方法是运行批处理文件,该批处理文件将验证驱动器号W:\以打开文件夹或显示错误屏幕。