繁体   English   中英

Windows 10:如何确定是否正在从网络映射的驱动器运行批处理文件

[英]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 /?

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM