簡體   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