Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
windows cmd脚本中的bash regex命令等效项_Windows_Command - Fatal编程技术网

windows cmd脚本中的bash regex命令等效项

windows cmd脚本中的bash regex命令等效项,windows,command,Windows,Command,与此bash命令等效的是什么: [[ $(uname) =~ NT-6.3 ]] && set_win81 在windows cmd脚本中 我很想用这样的东西: if (ver | findstr /C:"Microsoft Windows [Version 6.3") ( goto :set_win81 ) 这样就足够了 ver | findstr /i /c:"Version 6.3" >nul && goto :set_win81 以下是我为这项

与此bash命令等效的是什么:

[[ $(uname) =~ NT-6.3 ]] && set_win81
在windows cmd脚本中

我很想用这样的东西:

if (ver | findstr /C:"Microsoft Windows [Version 6.3") ( goto :set_win81 )

这样就足够了

ver | findstr /i /c:"Version 6.3" >nul && goto :set_win81
以下是我为这项任务储存的一些代码:

@echo off
set "windows="
VER | find  " 4.1." > nul && set windows=W98
VER | find  " 4.0." > nul && set windows=NT
VER | find  " 5.0." > nul && set windows=W2K
VER | find  " 5.1." > nul && set windows=XP
VER | find  " 5.2." > nul && set windows=XP 64-Bit or Server 2003 or Server 2003 R2 
VER | find  " 6.0." > nul && set windows=Vista or server 2008
VER | find  " 6.1." > nul && set windows=Win7 or server 2008 R2
VER | find  " 6.2." > nul && set windows=Windows 8
VER | find  " 6.3." > nul && set windows=Server 2012 R2 or Windows 8.1
if defined windows (
echo %windows%
) else (
echo unknown operating system
)
pause

这样就足够了

ver | findstr /i /c:"Version 6.3" >nul && goto :set_win81
以下是我为这项任务储存的一些代码:

@echo off
set "windows="
VER | find  " 4.1." > nul && set windows=W98
VER | find  " 4.0." > nul && set windows=NT
VER | find  " 5.0." > nul && set windows=W2K
VER | find  " 5.1." > nul && set windows=XP
VER | find  " 5.2." > nul && set windows=XP 64-Bit or Server 2003 or Server 2003 R2 
VER | find  " 6.0." > nul && set windows=Vista or server 2008
VER | find  " 6.1." > nul && set windows=Win7 or server 2008 R2
VER | find  " 6.2." > nul && set windows=Windows 8
VER | find  " 6.3." > nul && set windows=Server 2012 R2 or Windows 8.1
if defined windows (
echo %windows%
) else (
echo unknown operating system
)
pause

作为解析版本输出的替代方法,您可以使用注册表:

setlocal 

set reg_info=reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion
for /f "skip=2 tokens=3" %%l in ('%reg_info%') do set win_ver=%%l

if "%win_ver%" equ "6.2" goto :set_win80
if "%win_ver%" equ "6.3" goto :set_win81

REM etc etc

关键点是,您可以使用带有一些设置的for/f循环来解析多行、多列数据,如reg查询的输出。

作为解析ver输出的替代方法,您可以使用注册表:

setlocal 

set reg_info=reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion
for /f "skip=2 tokens=3" %%l in ('%reg_info%') do set win_ver=%%l

if "%win_ver%" equ "6.2" goto :set_win80
if "%win_ver%" equ "6.3" goto :set_win81

REM etc etc

关键是,您可以使用带有一些设置的for/f循环来解析多行、多列数据,如reg查询的输出。

Windows版本值是:您的第一个代码示例也是错误的。看起来应该像第二个示例中的线条。@Tomalak感谢您的关注:thumbsup:Windows版本值为:您的第一个代码示例也是一个错误。看起来应该像第二个示例中的线条。@Tomalak感谢您的关注:thumbsup:对于批处理文件,for循环变量在%l和%l上都需要额外的百分比。绝对。修复了该问题。对于批处理文件,for循环变量需要在两个%l上都增加一个百分比。绝对。修正了。