硬汉嵌入式论坛

 找回密码
 立即注册
查看: 416|回复: 6
收起左侧

AI生成的bat文件怎么不靠谱啊?deepseek

[复制链接]

354

主题

2162

回帖

3229

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3229
发表于 2025-3-12 16:58:14 | 显示全部楼层 |阅读模式
想使用deepseek生成一个bat文件,双击就可以查询电脑硬件信息,可是这个家伙连基本语法都搞错了啊?
以下是生成的代码,运行时提示少了个}号。。。。哪个懂windows的powershell的这些知识,请帮忙看一下



[C] 纯文本查看 复制代码
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "& { 
    # 硬件信息收集
    $info = @{}
    
    # 操作系统信息
    $os = Get-CimInstance Win32_OperatingSystem
    $info['OS'] = @{
        '操作系统' = $os.Caption.Trim()
        '版本' = $os.Version
        '架构' = $os.OSArchitecture
    }

    # 处理器信息
    $cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
    $info['处理器'] = @{
        '型号' = $cpu.Name.Trim()
        '核心数' = $cpu.NumberOfCores
        '线程数' = $cpu.NumberOfLogicalProcessors
        '最大频率' = ($cpu.MaxClockSpeed/1000).ToString('0.00 GHz')
    }

    # 内存信息
    $memory = Get-CimInstance Win32_PhysicalMemory
    $totalMemGB = ($memory | Measure-Object -Property Capacity -Sum).Sum/1GB
    $info['内存'] = @{
        '总容量' = [math]::Round($totalMemGB, 2).ToString() + ' GB'
        '模块' = $memory | ForEach-Object { 
            [math]::Round($_.Capacity/1GB, 2).ToString() + ' GB ' + $_.Speed.ToString() + 'MHz' 
        }
    }

    # 主板信息
    $board = Get-CimInstance Win32_BaseBoard
    $info['主板'] = @{
        '制造商' = $board.Manufacturer
        '型号' = $board.Product
        '版本' = $board.Version
    }

    # 存储设备
    $disks = Get-CimInstance Win32_DiskDrive | Where-Object { $_.MediaType -ne 'Removable Media' }
    $info['存储'] = $disks | ForEach-Object {
        @{
            '型号' = $_.Model.Trim()
            '容量' = [math]::Round($_.Size/1GB, 2).ToString() + ' GB'
            '接口类型' = $_.InterfaceType
        }
    }

    # 显卡信息
    $gpu = Get-CimInstance Win32_VideoController
    $info['显卡'] = $gpu | ForEach-Object { @{ '型号' = $_.Name.Trim() } }

    # 网络适配器
    $nics = Get-CimInstance Win32_NetworkAdapter | Where-Object { 
        $_.PhysicalAdapter -eq $true -and $_.Name -notmatch 'Virtual'
    }
    $info['网络适配器'] = $nics | ForEach-Object { @{ '名称' = $_.Name.Trim() } }

    # 中文输出格式化
    $chineseMap = @{
        'OS' = '操作系统'
        '处理器' = '处理器'
        '内存' = '内存信息'
        '主板' = '主板信息'
        '存储' = '存储设备'
        '显卡' = '图形设备'
        '网络适配器' = '物理网络适配器'
    }

    # 显示信息
    $info.GetEnumerator() | ForEach-Object {
        Write-Host ("`n=== {0} ===" -f $chineseMap[$_.Key]) -ForegroundColor Cyan
        if($_.Value -is [array]) {
            $_.Value | ForEach-Object { 
                $_.GetEnumerator() | ForEach-Object {
                    Write-Host ("  {0}: {1}" -f $_.Key, $_.Value)
                }
                Write-Host ""
            }
        } else {
            $_.Value.GetEnumerator() | ForEach-Object {
                Write-Host ("  {0}: {1}" -f $_.Key, $_.Value)
            }
        }
    }  # 此处补充了缺失的闭合括号
    
    Write-Host "`n信息收集完成,按任意键退出..." -ForegroundColor Green
}"
pause


回复

使用道具 举报

354

主题

2162

回帖

3229

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3229
 楼主| 发表于 2025-3-12 16:59:26 | 显示全部楼层
Snipaste_2025-03-12_16-59-06.png
回复

使用道具 举报

354

主题

2162

回帖

3229

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3229
 楼主| 发表于 2025-3-12 17:00:49 | 显示全部楼层

Snipaste_2025-03-12_16-59-45.png



以下是一个结合批处理外壳和PowerShell核心的混合脚本,可以保存为`.bat`文件并直接运行,用于显示详细的硬件信息:

```batch
@echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "& {
    # 硬件信息收集
    $info = @{}
   
    # 操作系统信息
    $os = Get-CimInstance Win32_OperatingSystem
    $info['OS'] = @{
        '操作系统' = $os.Caption.Trim()
        '版本' = $os.Version
        '架构' = $os.OSArchitecture
    }

    # 处理器信息
    $cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
    $info['处理器'] = @{
        '型号' = $cpu.Name.Trim()
        '核心数' = $cpu.NumberOfCores
        '线程数' = $cpu.NumberOfLogicalProcessors
        '最大频率' = ($cpu.MaxClockSpeed/1000).ToString('0.00 GHz')
    }

    # 内存信息
    $memory = Get-CimInstance Win32_PhysicalMemory
    $totalMemGB = ($memory | Measure-Object -Property Capacity -Sum).Sum/1GB
    $info['内存'] = @{
        '总容量' = [math]::Round($totalMemGB, 2).ToString() + ' GB'
        '模块' = $memory | ForEach-Object {
            [math]::Round($_.Capacity/1GB, 2).ToString() + ' GB ' + $_.Speed.ToString() + 'MHz'
        }
    }

    # 主板信息
    $board = Get-CimInstance Win32_BaseBoard
    $info['主板'] = @{
        '制造商' = $board.Manufacturer
        '型号' = $board.Product
        '版本' = $board.Version
    }

    # 存储设备
    $disks = Get-CimInstance Win32_DiskDrive | Where-Object { $_.MediaType -ne 'Removable Media' }
    $info['存储'] = $disks | ForEach-Object {
        @{
            '型号' = $_.Model.Trim()
            '容量' = [math]::Round($_.Size/1GB, 2).ToString() + ' GB'
            '接口类型' = $_.InterfaceType
        }
    }

    # 显卡信息
    $gpu = Get-CimInstance Win32_VideoController
    $info['显卡'] = $gpu | ForEach-Object { @{ '型号' = $_.Name.Trim() } }

    # 网络适配器
    $nics = Get-CimInstance Win32_NetworkAdapter | Where-Object {
        $_.PhysicalAdapter -eq $true -and $_.Name -notmatch 'Virtual'
    }
    $info['网络适配器'] = $nics | ForEach-Object { @{ '名称' = $_.Name.Trim() } }

    # 中文输出格式化
    $chineseMap = @{
        'OS' = '操作系统'
        '处理器' = '处理器'
        '内存' = '内存信息'
        '主板' = '主板信息'
        '存储' = '存储设备'
        '显卡' = '图形设备'
        '网络适配器' = '物理网络适配器'
    }

    # 显示信息
    $info.GetEnumerator() | ForEach-Object {
        Write-Host ("`n=== {0} ===" -f $chineseMap[$_.Key]) -ForegroundColor Cyan
        if($_.Value -is [array]) {
            $_.Value | ForEach-Object {
                $_.GetEnumerator() | ForEach-Object {
                    Write-Host ("  {0}: {1}" -f $_.Key, $_.Value)
                }
                Write-Host ""
            }
        } else {
            $_.Value.GetEnumerator() | ForEach-Object {
                Write-Host ("  {0}: {1}" -f $_.Key, $_.Value)
            }
        }
    }
   
    Write-Host "`n信息收集完成,按任意键退出..." -ForegroundColor Green
}"
pause
```

**脚本功能特点:**

1. **混合架构设计**:
   - 使用批处理外壳作为启动器
   - 核心功能通过内嵌PowerShell实现
   - 自动绕过执行策略限制

2. **增强的信息显示**:
   - 支持中英双语对照显示
   - 带颜色分类的输出格式
   - 智能单位转换(自动将字节转换为GB)

3. **详细信息覆盖**:
   - CPU详细参数(核心/线程数、最大频率)
   - 内存模块的独立容量和频率
   - 存储设备的接口类型识别
   - 过滤虚拟网络适配器

4. **智能数据处理**:
   - 自动舍入小数位数
   - 排除可移动存储设备
   - 处理多硬件实例(如多显卡、多内存条)

**使用方法:**
1. 将代码保存为 `sysinfo.bat`
2. 双击运行或右键选择"以管理员身份运行"(推荐)
3. 等待信息收集完成(约3-5秒)

**相比原始批处理版本的优势:**
1. 信息精度提升:
   - 内存显示精确到小数点后两位
   - 支持显示内存频率
   - 显示CPU实际睿频信息

2. 数据可靠性增强:
   - 使用CIM代替WMI查询
   - 更好的类型转换处理
   - 自动过滤虚拟设备

3. 可视化改进:
   - 彩色分类显示
   - 层级化信息结构
   - 支持多语言环境

**注意事项:**
1. 部分安全软件可能会拦截混合脚本的执行
2. 需要.NET Framework 3.5+支持
3. 首次运行可能需要较长时间加载PowerShell模块
4. 精确频率信息需要管理员权限获取

如果需要更详细的信息,可以在批处理文件最后添加以下命令来生成报告文件:
```powershell
$info | ConvertTo-Json -Depth 5 | Out-File "$env:USERPROFILE\Desktop\SystemReport.json"
```

回复

使用道具 举报

2

主题

141

回帖

147

积分

初级会员

积分
147
发表于 2025-3-13 09:01:28 | 显示全部楼层
我觉得还是网上找找有没现成的,感觉目前ai生成的代码你得会才比较好用,不会的话很容易被坑
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2025-3-13 11:23:40 | 显示全部楼层
现在的AI本质上就是鹦鹉学舌,不过当作一个更精准的搜索引擎用还是不错的。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2025-3-13 14:48:01 | 显示全部楼层
你可以把错误信息再丢给他,让他再思考一下,然后再试,多次几次基本就差不多了。
回复

使用道具 举报

354

主题

2162

回帖

3229

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3229
 楼主| 发表于 2025-3-28 16:43:28 | 显示全部楼层
今天有空,整好了。
解压后,鼠标右键,“使用powershell”运行。

检测硬件2025.zip

1.49 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-25 21:51 , Processed in 0.248320 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表