[英]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.