[英]Windows 10: How can I determine whether a batch file is being run from network mapped drive
如果要从网络位置/映射的驱动器运行批处理文件,我想阻止它运行。 是否可以知道PWD是否是映射的驱动器/网络位置?
注意:这与下面的帖子不同。 在下面的文章中,用户知道要防止运行批处理的驱动器号。
%~d0
引用“ 驱动器 ”,在该驱动器上存储已执行的批处理文件,即批处理文件上的驱动器号和冒号存储在存储介质(本地硬盘,USB记忆棒,CD / DVD驱动器等)或网络资源上分配了驱动器号(网络驱动器),或批处理文件上的两个反斜杠存储在网络资源上,并使用UNC路径启动。
带有参数use
的命令net
输出分配了驱动器号的网络资源列表,可以在其中搜索当前执行的批处理文件的驱动器号。
@echo off
if "%~d0" == "\\" (
echo Batch file is started using UNC path "%~dp0".
goto :EOF
)
%SystemRoot%\System32\net.exe use | %SystemRoot%\System32\findstr.exe /I /L /C:" %~d0 " >nul
if not errorlevel 1 (
echo Batch file is started from network drive %~d0.
goto :EOF
)
echo Okay running batch file from drive %~d0.
注意:搜索字符串也可以只是%~d0
而不是" %~d0 "
。 仅需要确保使用引号引起的多余空格,才能确保在net use
输出的第二列中找到包含驱动器号和冒号的行。
为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
call /?
...解释了修饰符~d
,它引用了批处理文件的参数,例如参数0,该参数始终是当前正在处理的批处理文件。 echo /?
goto /?
if /?
net /?
和net use /?
也可以看看:
>nul
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.