Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 仅在连接到wifi批处理时运行代码_Batch File - Fatal编程技术网

Batch file 仅在连接到wifi批处理时运行代码

Batch file 仅在连接到wifi批处理时运行代码,batch-file,Batch File,我需要运行一个批处理文件,只有当它连接到Wifi,特别是不是蓝牙局域网 我有此代码,但它返回此代码,并且在没有internet连接时仍运行此代码 Node - DEVICENAME ERROR: Description = Invalid query 代码: @echo关闭 对于/f“usebackq”%%A,在( `wmic路径WIN32_网络适配器,其中“NetConnectionID=”Wi-Fi“获取NetConnectionStatus` )如果%%A equ 7执行(转到结束)

我需要运行一个批处理文件,只有当它连接到Wifi,特别是不是蓝牙局域网

我有此代码,但它返回此代码,并且在没有internet连接时仍运行此代码

Node - DEVICENAME
ERROR:
Description = Invalid query
代码:

@echo关闭
对于/f“usebackq”%%A,在(
`wmic路径WIN32_网络适配器,其中“NetConnectionID=”Wi-Fi“获取NetConnectionStatus`
)如果%%A equ 7执行(转到结束)
<要运行的代码>
:结束

循环不需要

wmic path WIN32_NetworkAdapter where 'NetConnectionID="Wi-Fi"' get NetConnectionStatus |find "7" >nul && goto :eof
echo code to run
如果要使其更安全,请使用
findstr/rc:“^7*$”

(您最初的方法失败,因为必须转义
=
…where'NetConnectionID^=“Wi-Fi”get…
,并且由于异常的
wmic
输出,您的
%%A
中存在
CR
,这会弄乱
if
语法;您可以看到
echo on
(至少你可以看到奇怪的事情发生了)


WMIC的输出也是我使用的奇怪的
findstr
模式的原因。(在
7
之后有尾随空格)。

对于
循环,您不需要

wmic path WIN32_NetworkAdapter where 'NetConnectionID="Wi-Fi"' get NetConnectionStatus |find "7" >nul && goto :eof
echo code to run
如果要使其更安全,请使用
findstr/rc:“^7*$”

(您最初的方法失败,因为必须转义
=
…where'NetConnectionID^=“Wi-Fi”get…
,并且由于异常的
wmic
输出,您的
%%A
中存在
CR
,这会弄乱
if
语法;您可以看到
echo on
(至少你可以看到奇怪的事情发生了)


WMIC的输出也是我使用的奇怪的
findstr
模式的原因。(在
7
之后有尾随空格)。

如果您还不知道无线接口连接的名称(这是一个可配置的属性),那么您可能可以使用类似以下内容:

@For/F令牌^=6^Delims^=^“%%%G In(“%SystemRoot%\System32\wbem\WMIC.exe)
其中“Not NetConnectionID为Null且NetConnectionStatus='2'”获取
NetConnectionID/Format:MOF 2^>NUL')Do@%SystemRoot%\System32\netsh.exe^
显示接口2>NUL |%SystemRoot%\System32\findstr.exe/E/L:%%G“1>NUL^
&&<要运行的代码>
如果您的目标系统仍在使用Windows 7(查找
/Format
选项中使用的某些XSL文件时存在已知问题),则以下替代方法可能适用于您:

@For/F“Skip=1 Delims=“%%G In(“%SystemRoot%\System32\wbem\WMIC.exe NIC Where
“Not NetConnectionID为Null,NetConnectionStatus='2'”获取NetConnectionID
2^>NUL')Do@For/F“令牌=*”%%H In(“%%G”)Do@%SystemRoot%\System32\netsh.exe^
WLAN显示接口2>NUL |%SystemRoot%\System32\findstr.exe/E/L:%%H“1>NUL^
&&<要运行的代码>

显然,如果您还不知道无线接口连接的名称(这是一个可配置的属性),您可以将上面提供并复制的
,更改为一个或多个实际有效的命令,然后您可能可以使用类似以下内容:

@For/F令牌^=6^Delims^=^“%%%G In(“%SystemRoot%\System32\wbem\WMIC.exe)
其中“Not NetConnectionID为Null且NetConnectionStatus='2'”获取
NetConnectionID/Format:MOF 2^>NUL')Do@%SystemRoot%\System32\netsh.exe^
显示接口2>NUL |%SystemRoot%\System32\findstr.exe/E/L:%%G“1>NUL^
&&<要运行的代码>
如果您的目标系统仍在使用Windows 7(查找
/Format
选项中使用的某些XSL文件时存在已知问题),则以下替代方法可能适用于您:

@For/F“Skip=1 Delims=“%%G In(“%SystemRoot%\System32\wbem\WMIC.exe NIC Where
“Not NetConnectionID为Null,NetConnectionStatus='2'”获取NetConnectionID
2^>NUL')Do@For/F“令牌=*”%%H In(“%%G”)Do@%SystemRoot%\System32\netsh.exe^
WLAN显示接口2>NUL |%SystemRoot%\System32\findstr.exe/E/L:%%H“1>NUL^
&&<要运行的代码>

显然,您会将上面提供的和复制的,
,更改为一个或多个实际有效的命令

只有%%A为7时,您才能转到标签端,但在您的输出中没有行包含7抱歉,我现在已经这样做了,谢谢。@compou只有%%A为7时,您才能转到标签端,但在您的输出中没有一行包含一个7对不起,我已经回复迟了,谢谢。@t谢谢你这工作做得很好!谢谢你这工作做得很好!