首页 文章

用于运行计算机测试的批处理脚本

提问于
浏览
-1

我不是一个真正的程序员 . 我是新手 .

你能帮助我一个Windows批处理文件,它将运行计算机测试吗?

  • 检测任何硬盘驱动器然后在它们上运行chkdisk

  • 检测任何USB端口

  • 检测电脑中的任何闪存驱动器插头

  • 检查显示像素

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

@echo off

setlocal EnableDelayedExpansion
set PNPDeviceID=4002FDCCE0E4D094
set Q='wmic diskdrive where "interfacetype='USB' and PNPDeviceID like '%%%PNPDeviceID%%%'" assoc /assocclass:Win32_DiskDriveToDiskPartition'
echo %Q%
for /f "tokens=2,3,4,5 delims=,= " %%a in (%Q%) do (
  set hd=%%a %%b, %%c %%d
  call :_LIST_LETTER !hd!)
goto :_END

:_LIST_LETTER
(echo %1 |find  "Disk ") >nul|| goto :_EOF 
for /f "tokens=3 delims==" %%a in ('WMIC Path Win32_LogicalDiskToPartition  ^|find %1') do set TMP_letter=%%a
set Part_letter=%TMP_letter:~1,2% 
echo %Part_letter% %1
goto :_EOF


:_END
:_EOF
:: *** end
pause

2 回答

  • -1

    我建议尝试

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

    将每个磁盘检查为一个单独的卷

  • 0

    这是一个批处理脚本,几乎可以完成您所需的一切 .

    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
    

    NOTE: 确保以管理员身份运行此命令 . 如果你想要chkdsk运行

    不幸的是,没有办法获取除存储之外的所有USB设备 . 希望这可以帮助!


    我没有意识到这个问题是4岁 . 要为后代留下我的答案,任何人都在寻找答案 .

相关问题