【问题标题】:Batch Script to run a computer test运行计算机测试的批处理脚本
【发布时间】:2013-05-17 17:46:34
【问题描述】:

我不是真正的程序员。我是新手。

你们能帮我制作一个可以运行计算机测试的 Windows 批处理文件吗?

  • 检测任何硬盘驱动器,然后在其上运行 chkdisk
  • 检测任何 USB 端口
  • 检测电脑中的任何闪存驱动器插件
  • 检查显示像素

我已经开始使用它来检测 USB,但不知何故出现了一些错误

@echo 关闭 setlocal EnableDelayedExpansion 设置 PNPDeviceID=4002FDCCE0E4D094 设置 Q='wmic diskdrive where "interfacetype='USB' and PNPDeviceID like '%%%PNPDeviceID%%%'" assoc /assocclass:Win32_DiskDriveToDiskPartition' 回声%Q% for /f "tokens=2,3,4,5 delims=,= " %%a in (%Q%) do ( 设置高清=%%a %%b, %%c %%d 呼叫 :_LIST_LETTER !hd!) 转到:_END :_LIST_LETTER (echo %1 |find "磁盘") >nul||转到:_EOF for /f "tokens=3 delims==" %%a in ('WMIC Path Win32_LogicalDiskToPartition ^|find %1') 设置 TMP_letter=%%a 设置 Part_letter=%TMP_letter:~1,2% 回显 %Part_letter% %1 转到:_EOF :_结尾 :_EOF :: *** 结尾 暂停

【问题讨论】:

  • 一个好的第一步是告诉我们这些错误是什么。
  • 使用批处理脚本检测闪存驱动器并非易事。我已经尝试了很多次,但从未真正成功。我想说这超出了像这样的简单问题的帮助范围。
  • "检查显示像素" = 获取当前显示分辨​​率?

标签: batch-file usb usb-drive


【解决方案1】:

这是一个批处理脚本,几乎可以满足您的所有需求。

Checkdisk 将针对任何本地固定驱动器运行。您可以让它在新窗口中运行 (chkdskAsync=true) 或让它在程序中运行 (chkdskAsync=false)。此外,使用 chkdskLaunchArguments= 变量指定 chkdsk 标志。

@ECHO OFF
CLS
SETLOCAL ENABLEDELAYEDEXPANSION
:: Use these lines to specify how CHKDSK and Notepad will run
:: ===============================================
SET chkdskLaunchArguments=/F /R
SET chkdskAsync=true
SET launchNotepad=true
:: ===============================================

COPY /Y NUL C:\Users\public\data.txt >nul 2>&1
ECHO Getting drive(s) information
FOR /F "tokens=*" %%A IN ('wmic logicaldisk get caption^, description^, providername^, volumename') DO (
    ECHO.%%A>>C:\Users\public\data.txt
)
FOR /F "tokens=1,2 skip=1" %%A IN ('wmic logicaldisk get caption^, drivetype') DO (
    IF %%B EQU 3 (
        IF "!chkdskAsync!" EQU "true" (
            START CMD /C CHKDSK %%A %chkdskLaunchArguments%
        ) ELSE (
            CHKDSK %%A %chkdskLaunchArguments%
        )
    )
)
ECHO Getting resolution information
FOR /F "tokens=*" %%A IN ('wmic path Win32_VideoController  get CurrentHorizontalResolution^,CurrentVerticalResolution') DO (
    ECHO.%%A>>C:\Users\public\data.txt
)
ECHO Information gathered ... saved to C:\Users\public\data.txt
ECHO Showing results.
IF "!launchNotepad!" EQU "true" (
    START /WAIT notepad.exe /A C:\Users\public\data.txt
)
ENDLOCAL
EXIT

完成后会将所有内容保存到C:\Users\Public\data.txt。它还将在记事本中启动文件(如果 launchNotepad=true 设置为 ... true)。

输出如下所示:

Caption  Description         ProviderName                               VolumeName                     

A:       Network Connection  \\somefileserver.domain\                       New Volume        
C:       Local Fixed Disk                                                                              
E:       Removable Disk                                                 someuser Drive           
H:       Network Connection  \\somefileserver.domain\users$\someuser  Data Share and User Home Dirs  
P:       Network Connection  \\somefileserver.domain\Data              Data Share and User Home Dirs  
S:       Network Connection  \\somefileserver.domain\share                                                         

CurrentHorizontalResolution  CurrentVerticalResolution  

1920                         1080                       

注意:确保以管理员身份运行。 如果你想让 chkdsk 运行

很遗憾,除了存储设备之外,没有其他方法可以获取所有 USB 设备。希望这会有所帮助!


我没有意识到这个问题已经 4 岁了。将我的答案留给后代和任何挖掘答案的人。

【讨论】:

    【解决方案2】:

    我会推荐尝试

    chkdsk volume=C:\ D:\ E:\ F:\
    

    将每个磁盘作为单独的卷进行检查

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2013-07-30
      • 2016-12-07
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多