第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

解析輸出時(shí)如何更正變量覆蓋行為

解析輸出時(shí)如何更正變量覆蓋行為

在批處理文件中,我正在使用以下內(nèi)容檢查Baseboard信息:BaseboardCheck.cmd@echo offsetlocal enabledelayedexpansionfor /f "tokens=1,2* delims==" %%a in ('wmic baseboard get /format:list') DO (     if ["%%a"] EQU ["Product"] (        set PlatformInfo=%%b        if defined PlatformInfo (            echo.!PlatformInfo!            echo.!PlatformInfo!This overwrites the variable        )    )    if ["%%a"] EQU ["Version"] (        set BaseboardVersion=%%b        if defined BaseboardVersion (            echo.!BaseboardVersion!            echo.!BaseboardVersion!This overwrites the variable        )    )   )上面的問(wèn)題:當(dāng)回顯出來(lái)時(shí),變量將被覆蓋,而不是附加。輸出:DX79SIThis overwrites the variableAAG28808-600This overwrites the variable我想要得到的是:DX79SIDX79SIThis overwrites the variableAAG28808-600AAG28808-600This overwrites the variable我已經(jīng)花了幾個(gè)小時(shí)(并將繼續(xù)這樣做),但希望其他人遇到了這個(gè)問(wèn)題。并希望其他任何遇到此解析問(wèn)題的人都可以在將來(lái)避免這種情況。由此產(chǎn)生的另一個(gè)問(wèn)題是,它似乎破壞了條件邏輯。更新在獲得所有幫助之后,我想出了以下解決方案:for /f "skip=2 tokens=1,2 delims=," %%a in ('wmic baseboard get Product^,Version^,Width /format:csv') do (    set Platform=%%a    set BaseboardVersion=%%b)echo.Platform: %Platform% echo.Version %BaseboardVersion%.
查看完整描述

3 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

是的,您有問(wèn)題,但這不是您的想法。


wmic 具有特殊的行為:在每行輸出的末尾有一個(gè)附加的回車(chē)符,即每行以 0x0d 0x0d 0x0a


這個(gè)附加的回車(chē)符存儲(chǔ)在變量中,當(dāng)回顯到控制臺(tái)時(shí),您將獲得數(shù)據(jù)和回車(chē)符,因此,如果變量后面跟有更多文本,則將光標(biāo)定位在行的開(kāi)頭(回車(chē)),此文本將在先前回顯的數(shù)據(jù)之上回顯。


怎么解決?


@echo off

setlocal enabledelayedexpansion


for /f "tokens=1,* delims==" %%a in ('wmic baseboard get /format:list') DO ( 



    if ["%%a"] EQU ["Product"] (

        for /f "delims=" %%c in ("%%b") do set "PlatformInfo=%%c"


        if defined PlatformInfo (

            echo(!PlatformInfo!

            echo(!PlatformInfo!This does not overwrite the variable

        )

    )


    if ["%%a"] EQU ["Version"] (

        for /f "delims=" %%c in ("%%b") do set "BaseboardVersion=%%c"


        if defined BaseboardVersion (

            echo(!BaseboardVersion!

            echo(!BaseboardVersion!This does not overwrite the variable

        )

    )   

)

在這種情況下,可以在不更改代碼邏輯的情況下使用附加for /f命令刪除附加回車(chē)符


查看完整回答
反對(duì) 回復(fù) 2019-11-20
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

正如已經(jīng)回答的那樣,問(wèn)題出在的行尾wmic。


如果不使用行尾,則可以解決此問(wèn)題:wmic baseboard get Product,Version,Width使用三個(gè)標(biāo)記:Product,Version和Width(在大多數(shù)情況下為empy)。因此輸出將是:DX79SI,AAG28808-600,我們正在使用令牌1和令牌2,而忽略令牌3(這將有問(wèn)題)


set Platform=undefined

set BaseboardVersion=undefined


for /f "tokens=1,2 delims=," %%a in ('wmic baseboard get Product^,Version^,Width^|findstr "."') do (

 set Platform=%%a

 set BaseboardVersion=%%b

)

echo it is a %Platform% with Version %BaseboardVersion%. No overwriting

我還添加delims=,了萬(wàn)一字符串包含空格的情況(不太可能出現(xiàn)product)


查看完整回答
反對(duì) 回復(fù) 2019-11-20
  • 3 回答
  • 0 關(guān)注
  • 645 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)