求自动识别系统WIN7和WIN10,然后自动执行对应的命令?感谢各位大神相助 ! 谢谢大家 !
本帖最后由 haook 于 2021-2-9 08:58 编辑求自动识别系统WIN7和WIN10,然后自动执行对应的命令?
感谢各位大神相助 ! 谢谢大家 ! ver|find "6." >NUL && set "winos=win7os"
ver|find "10." >NUL && set "winos=win10os"
goto %winos%
:win7os
...
goto end
:win10os
...
:end
学习了。 magicgenius 发表于 2021-2-9 09:23
ver|find "6." >NUL && set "winos=win7os"
ver|find "10." >NUL && set "winos=win10os"
goto %winos%
谢谢,好批处理 撸主可以搜索SWAI和R4OSV,不满足要求再说 magicgenius 发表于 2021-2-9 09:23
ver|find "6." >NUL && set "winos=win7os"
ver|find "10." >NUL && set "winos=win10os"
goto %winos%
10.0.10586.XXX是否会匹配到"6."? 学习一下{:1_193:} 方法一:
@echo off
for /f 'tokens=2 delims=[' %%Q in ('ver') do for /f 'tokens=2,3 delims=. ' %%R in ('%%Q') do set ver=%%R.%%S
echo %ver%
pause
方法二:
@echo off
for /f 'tokens=1,2 delims=. ' %%Q in ('wmic os get version ^| findstr ''') do set ver=%%Q.%%R
echo %ver%
pause
方法二需要WMIC支持,如果你从未运行过WMIC命令,XP上首次运行时会自动安装WMIC,此时识别速度稍慢,第二次以后无此问题,Win7以上无此问题。方法一只需要cmd能正常运行即可。
@echo off
FOR /F "tokens=4 delims=. " %%i in ('ver') do (
if %%i equ 6 Goto :Win7
if %%i equ 10 Goto :Win10
)
:Win7
echo This is Win7
Goto :EOF
:Win10
echo This is Win10
Goto :EOF
注册表最好 邪恶海盗 发表于 2021-2-9 10:46
10.0.10586.XXX是否会匹配到"6."?
忘了,应该是6.1
ver|find "6.1." >NUL && set "winos=win7os" 其实,查版本还可以用以下方法:
dir /b %Windir%\servicing\Version|find "6.1." >NUL &&set "winos=win7os"
dir /b %Windir%\servicing\Version|find "10.0." >NUL &&set "winos=win10os"
给个略微靠谱一点点的,只考虑消费者版本
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "10.0" echo Windows 10
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "6.2" echo Windows 8.
if "%version%" == "6.1" echo Windows 7.
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "5.2" echo Windows XP (x64).
if "%version%" == "5.1" echo Windows XP.
if "%version%" == "5.0" echo Windows 2000.
if "%version%" == "4.90" echo Windows Me.
if "%version%" == "4.10" echo Windows 98.
if "%version%" == "4.00" echo Windows 95.
if "%version%" == "3.2" echo Windows 3.2.
if "%version%" == "3.11" echo Windows for Workgroups 3.11.
if "%version%" == "3.10" echo Windows 3.1.
if "%version%" == "3.00" echo Windows 3.0.
if "%version%" == "2.11" echo Windows 2.11.
if "%version%" == "2.10" echo Windows 2.10.
if "%version%" == "2.03" echo Windows 2.03.
if "%version%" == "1.04" echo Windows 1.04.
if "%version%" == "1.03" echo Windows 1.03.
if "%version%" == "1.02" echo Windows 1.02.
if "%version%" == "1.01" echo Windows 1.0.
(XP 后面的全当娱乐,实测无效(
楼上都是批高手,学习一下! CodeHz 发表于 2021-2-9 23:01
给个略微靠谱一点点的,只考虑消费者版本
setlocal
XP之前的也不见得靠谱 邪恶海盗 发表于 2021-2-10 00:47
XP之前的也不见得靠谱
(我的意思是xp那一行之后的( CodeHz 发表于 2021-2-10 01:50
(我的意思是xp那一行之后的(
我的意思是XP那一行之前的 本帖最后由 dos时代菜鸟 于 2021-2-10 11:13 编辑
无非是 文本流 在脚本编辑中的处理和运用。
计算机 输出一个文本信息,人能看懂的信息,再返给计算机让计算机做些什么。
涉及到的 无非就是 判断语句,变量赋值语句,循环语句,显示语句之类的。
要说 cmd 下,最直接的就是用 ver 命令,获取 cmd 版本,不同版本的 nt 框架 cmd 版本不一样。
需要注意的是 cmd 下的 if 语句只能对比 整数。
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=4,5 delims=[. " %%c in ('ver ') do (
set "ver_x=%%c"
set "ver_y=%%d"
)
set run=0
if !ver_x! equ 6( if !ver_y! equ 1 (
set run=1
call:win7
))
if !ver_x! equ 10 (
set run=1
call:win10
)
if !run! equ 0call:error1
goto :eof
:win7
echo 此处运行 win7 相关代码.
exit /b
:end_win7
:win10
echo 此处运行 win10 相关代码.
exit /b
:end_win10
:Error1
echo 不支持非win7/10系列.
pause
exit /b
:end_error1
如果楼主需要判断的系统只限于简体中文版的话,可以参考以下代码:
@echo off
ver | find "版本 10.0." && goto win10
ver | find "版本 6.1." && goto win7
goto eof
:win10
相关代码
goto eof
:win7
相关代码
goto eof
楼上的都是大神,我来膜拜一下 这里好多大神,可以好好学习 本帖最后由 cjfcjf111 于 2021-3-27 18:29 编辑
if not exist "C:\Windows\System32\Boot" echo winxp
for %%i in ("C:\Windows\System32\Boot\winload.exe") do if %%~zi LSS 80000 echo win7
for %%i in ("C:\Windows\System32\Boot\winload.exe") do if %%~zi GEQ 80000 echo win10
由于WIN7和WIN10中的winload.exe大小有明显的区别,用这个分别,百分百不会错,也没有什么版本号上会有相同而错判的可能,因为是详细的路径,则能够在PE中也可判断
cjfcjf111 发表于 2021-3-27 15:59
if not exist "C:\Windows\System32\Boot" echo winxp
for %%i in ("C:\Windows\System32\Boot\winload. ...
人多思路广
页:
[1]