首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本在运行时暂停。

批处理脚本在运行时暂停。
EN

Stack Overflow用户
提问于 2014-07-23 14:12:28
回答 1查看 103关注 0票数 1

我编写了一个批处理脚本,内容如下:

代码语言:javascript
复制
@echo off

setlocal enableextensions enabledelayedexpansion
    set "outfile=wmic-full-output.txt"

    for /L %%y in (73,1,79) do (
    for /L %%z in (1,1,254) do (

    echo ********************************************************* >> "!outfile!"

    set "node=172.22.%%y.%%z"

    echo !node! >> "!outfile!"

    ping -n 1 -l 1 -w 1 !node! | find "Packets" >> "!outfile!"
    if not errorlevel 1 (
    nbtstat -A !node! >> !outfile!
    nbtstat -A !node! | find /i "Host not found." >nul 2>&1 && ( echo Not a Windows Machine >> !outfile! ) || (

    for /f "tokens=2-7 delims=," %%a in (
        'wmic /node:"!node!" computersystem get domain^,manufacturer^,model^,name^,systemtype^,username^,wakeuptype /format:csv ^| find /i "!node!"'
    ) do (
        set "_domain=%%a"
    set "_manufacturer=%%b"
        set "_model=%%c"
        set "_name=%%d"
        set "_systemType=%%e"
        set "_userName=%%f"
    for %%j in (!_username!) do (set "_username=%%j")
    if "!_username!"=="6" (set "_username=Not Available")
     )


    for /f "tokens=2 delims=," %%a in (
        'wmic /node:"!node!" bios get serialNumber^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_serialNumber=%%a"
    )

    for /f "tokens=2-3 delims=," %%a in (
        'wmic /node:"!node!" os get name^,totalvisiblememorysize^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_osName=%%a"
    for /f "tokens=1 delims=|" %%j in ("!_osName!") do (set "_osName=%%j")
    set "_memory=%%b"
    )

    for /f "tokens=2 delims=," %%a in (
        'wmic /node:"!node!" cpu get name^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_cpu=%%a"

    echo HostName= !_name! >> "!outfile!"
    echo Domain= !_domain!>> "!outfile!"
    echo UserName= !_userName! >> "!outfile!"
    echo Manufacturer= !_manufacturer! >> "!outfile!"
    echo Model= !_model! >> "!outfile!"
    echo SystemType= !_systemType! >> "!outfile!"
    echo SerialNumber= !_serialNumber! >> "!outfile!"
    echo OperatingSystem= !_osName! >> "!outfile!"
    echo RAM= !_memory! >> "!outfile!"
    echo Processor= !_cpu! >> "!outfile!"

    )
  ))
))

当在Windows服务器上执行上述脚本时,在成功执行172.22.73.12之后,它将永久暂停。当观察到outfile内容时,记录的最新结果是nbtstat -A 172.22.73.13的输出。

剧本有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 10:58:15

测试这个:

代码语言:javascript
复制
@echo off

setlocal enableextensions enabledelayedexpansion
    set "outfile=wmic-full-output.txt"

    for /L %%y in (73,1,79) do (
    for /L %%z in (1,1,254) do (

    echo ********************************************************* >> "!outfile!"

    set "node=172.22.%%y.%%z"

    echo !node! >> "!outfile!"

    ping -n 1 -l 1 -w 1 !node! | find /i "TTL=" >> "!outfile!"
    if not errorlevel 1 (
    nbtstat -A !node! >> !outfile!
    nbtstat -A !node! | find /i "Host not found." >nul 
    if errorlevel 1 (


    for /f "tokens=2-7 delims=," %%a in (
        'wmic /node:"!node!" computersystem get domain^,manufacturer^,model^,name^,systemtype^,username^,wakeuptype /format:csv ^| find /i "!node!"'
    ) do (
        set "_domain=%%a"
    set "_manufacturer=%%b"
        set "_model=%%c"
        set "_name=%%d"
        set "_systemType=%%e"
        set "_userName=%%f"
    for %%j in (!_username!) do (set "_username=%%j")
    if "!_username!"=="6" (set "_username=Not Available")
     )


    for /f "tokens=2 delims=," %%a in (
        'wmic /node:"!node!" bios get serialNumber^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_serialNumber=%%a"
    )

    for /f "tokens=2-3 delims=," %%a in (
        'wmic /node:"!node!" os get name^,totalvisiblememorysize^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_osName=%%a"
    for /f "tokens=1 delims=|" %%j in ("!_osName!") do (set "_osName=%%j")
    set "_memory=%%b"
    )

    for /f "tokens=2 delims=," %%a in (
        'wmic /node:"!node!" cpu get name^,version /format:csv ^| find /i "!node!"'
    ) do (
        set "_cpu=%%a"

    echo HostName= !_name! >> "!outfile!"
    echo Domain= !_domain!>> "!outfile!"
    echo UserName= !_userName! >> "!outfile!"
    echo Manufacturer= !_manufacturer! >> "!outfile!"
    echo Model= !_model! >> "!outfile!"
    echo SystemType= !_systemType! >> "!outfile!"
    echo SerialNumber= !_serialNumber! >> "!outfile!"
    echo OperatingSystem= !_osName! >> "!outfile!"
    echo RAM= !_memory! >> "!outfile!"
    echo Processor= !_cpu! >> "!outfile!"

    )

)
)
)
)
echo done
pause
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24912848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档