无忧启动论坛

标题: 指定系统版本并执行相关操作 [打印本页]

作者: 123456dj    时间: 2024-8-6 00:25
标题: 指定系统版本并执行相关操作
假设系统为win7并且只在win7上操作
而文件夹里有1.txt 3.reg这两个文件1.txt 是复制在 系统盘Windows目录下
而 3.reg 是在复制完文件后 注册此文件

批处理如下:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

:: 定义要复制的文件和目标路径
SET sourceFile=1.txt
SET destination=C:\Windows

:: 定义要运行的注册表文件
SET regFile=3.reg

:: 使用wmic获取操作系统版本号
for /f "tokens=1,2,3 delims==" %%a in ('wmic os get Version /value') do (
    if "%%a"=="Version" (
        set "osVersion=%%b"
    )
)

:: 检查是否为Windows 7
if "!osVersion!"=="6.1" (
    echo 检测到Windows 7
    goto CopyAndRun
) else (
    echo 这不是Windows 7
    goto End
)

:CopyAndRun
:: 复制文件到目标路径
if exist "%sourceFile%" (
    copy /y "%sourceFile%" "%destination%\%sourceFile%"
) else (
    echo 源文件 %sourceFile% 不存在。
    goto End
)

:: 运行注册表文件
if exist "%regFile%" (
    reg import "%regFile%"
    echo 注册表文件 %regFile% 已成功运行。
) else (
    echo 注册表文件 %regFile% 不存在。
)

:End
ENDLOCAL
pause

实体系统测试 在 获取操作系统版本号 这里报错
始终输出为 这不是Windows 7
感觉是获取版本号这里报错 能优化下就好

作者: ootd123123    时间: 2024-8-6 00:51

感谢辛苦提供分享!

作者: 13325531750    时间: 2024-8-6 08:06
感谢分享!学习一下。
作者: wych12    时间: 2024-8-6 08:17
感谢分享!
作者: tanglf    时间: 2024-8-6 08:19
学习了!
谢谢楼主
作者: toptop    时间: 2024-8-6 08:49
感谢分享!学习一下。
作者: 2011medp7060    时间: 2024-8-6 09:59
谢谢,学习了
作者: yc2428    时间: 2024-8-6 11:01

谢谢
作者: towlzj800801    时间: 2024-8-6 11:22
感谢楼主分享
作者: 邪恶海盗    时间: 2024-8-6 11:46
可能会不严谨,比如6.1可能是6.1.7603,还有可能是10.0.10586.1XXX...

-----------------------
作者: guong    时间: 2024-8-6 11:49
来了解下
作者: baby1277    时间: 2024-8-6 11:52
我一般是对比其他系统没有的文件或者注册表项来判断
作者: holley2008    时间: 2024-8-6 11:59
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION

  3. :: 定义要复制的文件和目标路径
  4. SET sourceFile=1.txt
  5. SET destination=C:\Windows

  6. :: 定义要运行的注册表文件
  7. SET regFile=3.reg

  8. :: 使用wmic获取操作系统版本号
  9. for /f "tokens=2 delims==" %%a in ('wmic os get Version /value') do (
  10.     set "osVersion=%%a"
  11. )

  12. :: 去除版本号中的空格
  13. set "osVersion=%osVersion: =%"

  14. :: 检查是否为Windows 7
  15. if "%osVersion:~0,3%"=="6.1" (
  16.     echo 检测到Windows 7
  17.     goto CopyAndRun
  18. ) else (
  19.     echo 这不是Windows 7 (版本号: %osVersion% )
  20.     goto End
  21. )

  22. :CopyAndRun
  23. :: 复制文件到目标路径
  24. if exist "%sourceFile%" (
  25.     copy /y "%sourceFile%" "%destination%\%sourceFile%"
  26.     echo 文件 %sourceFile% 已成功复制到 %destination%
  27. ) else (
  28.     echo 源文件 %sourceFile% 不存在。
  29.     goto End
  30. )

  31. :: 运行注册表文件
  32. if exist "%regFile%" (
  33.     reg import "%regFile%"
  34.     echo 注册表文件 %regFile% 已成功运行。
  35. ) else (
  36.     echo 注册表文件 %regFile% 不存在。
  37. )

  38. :End
  39. ENDLOCAL
  40. pause
复制代码

作者: rgfwqx@163.com    时间: 2024-8-6 14:15
学习
作者: nttwqz    时间: 2024-8-6 14:36
dpinfo和dp盘符整理都有系统版本判断代码,去抄一下。
作者: 邪恶海盗    时间: 2024-8-6 15:17
本帖最后由 邪恶海盗 于 2024-8-6 15:20 编辑
nttwqz 发表于 2024-8-6 14:36
dpinfo和dp盘符整理都有系统版本判断代码,去抄一下。

我以前好像是比对kernel32.dll文件版本号来区分系统的...

--------------------
作者: nttwqz    时间: 2024-8-6 16:52
邪恶海盗 发表于 2024-8-6 15:17
我以前好像是比对kernel32.dll文件版本号来区分系统的...

--------------------

牛大之前研究出一种类似查找winsxs文件夹相关文件离线获取版本号的方法,貌似我还写过几行代码。在线的话还是ver简单可靠。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3