电竞比分网-中国电竞赛事及体育赛事平台

分享

FOR參數(shù)/F之usebackq

 人生豈可消亡 2010-07-06

(五)usebackq

該命令不是很明朗,這里只能指出使用"usebackq"時需要注意的問題,就是集合內(nèi)使用雙引號、單引號和后引號的情況。

1、 當(dāng)集合中的文件名file-set含有空格時使用雙引號。

語法:

FOR /F "usebackq" %%I   IN (“FileNameSet”)   DO Command2

用法:

集合中的文件名或路徑含有空格時,如“file”與“Name”之間有空格,此時需要用雙引號將兩者括起來,保持文件名或路徑的完整性,并在參數(shù)后打開"usebackq"。

集合中的文件名沒有空格:

@echo off

For /f %%a in (C:\note.txt) do echo %%a

pause>nul

顯示結(jié)果:

能正常讀取文檔note.txt里的內(nèi)容。

集合中的文件名含有空格,無法讀取文本note.txt里的內(nèi)容:

@echo off

for /f %%a in (C:\Documents and Settings\Administrator\桌面\note.txt) do echo %%a

pause>nul

顯示結(jié)果:

系統(tǒng)找不到文件C:\Documents。。

即使加上雙引號也只是將其作為字符串顯示:

@echo off

for /f %%a in (“C:\Documents and Settings\Administrator\桌面\note.txt”) do echo %%a

pause>nul

顯示結(jié)果:

C:\Documents

使用"usebackq"但不加雙引號,會找不到路徑:

@echo off

for /f "usebackq" %%a in (C:\Documents and Settings\Administrator\桌面\note.txt) do echo %%a

pause>nul

顯示結(jié)果:

系統(tǒng)找不到文件 C:\Documents。。

正確的方式:使用"usebackq"并且在集合中用雙引號將含有空格的文件名包含住。

@echo off

for /f "usebackq" %%a in ("C:\Documents and Settings\Administrator\桌面\note.txt") do echo %%a

pause>nul

顯示結(jié)果:成功顯示文檔note.txt里的內(nèi)容。

講解:

這里所說的是文件名,如“note.txt”,是區(qū)別于后面所說的字符串的。

我的理解,字符串是集合里直接用于屏幕顯示的語句,如“我愛北京天安門”,它不是用于執(zhí)行命令的,也不同于文件名。

文件名是用于間接顯示字符串和打開文件或命令的,如文件名“note.txt”它本身不直接顯示在屏幕上,如果直接顯示就是字符串,如果它的目的是打開文本里的信息那它是文件名。

當(dāng)文件名或路徑中間帶有空格的時候,如“Documents and Settings”,應(yīng)該使用usebackq和雙引號。

2、當(dāng)使用usebackq處理文字字符串時使用單引號。

格式:

FOR /F "usebackq" %%variable IN ('command') DO command [command-parameters]

注意:

'command'使用的是“單引號”,區(qū)別于上面(`set`)的“后引號”

:

@echo off

for /f "usebackq delims=" %%a in ('Hello "AnsiPeter" Word!') do echo.%%a

pause>nul

顯示結(jié)果:

Hello "AnsiPeter" Word!

講解:

前面提到,字符串是用于直接屏幕顯示的語句,顯然“Hello "AnsiPeter" Word”被直接顯示到屏幕上了。這里只是強調(diào)usebackq也可以顯示字符串,而且使用單引號,不同于不用usebackq時使用的雙引號。

不使用usebackq也可以顯示字符串,例:

@echo off

for /f   "delims=" %%a in ("Hello "AnsiPeter" Word!") do echo.%%a

pause>nul

顯示結(jié)果同上

注意:不使用usebackq顯示字符串時,字符串中有空格時必須用英文狀態(tài)下的雙引號。更多請閱讀下一節(jié)的案例“偉大的中國人民萬歲 萬歲 萬萬歲”。

3、當(dāng)集合內(nèi)是可執(zhí)行的命令時使用“后引號”。

語法:

FOR /F "usebackq" %%variable IN (`command`) DO command [command-parameters]

注意:

后引號在鍵盤上ESC鍵的下面,“~”鍵。英文狀態(tài)下輕按一下。

例:

@echo off

FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i

pause

顯示結(jié)果:

枚舉當(dāng)前環(huán)境中的環(huán)境變量名稱。

講解:

`set`由于使用了usebackq和后引號,因此它表示命令執(zhí)行,即括號內(nèi)的`set`FOR以外的一個命令,它在DO后面的echo之前先執(zhí)行了。

命令區(qū)別于文件名和字符串的地方是,命令是批處理中設(shè)定可以作用于其他命令、文件名和字符串執(zhí)行相應(yīng)任務(wù)的字母和標(biāo)點符號。而文件名和字符串通常是被動地接受命令的安排的。因此,命令是早先設(shè)計好的,我們只是自由地組合它們而已。

未使用usebackq和使用usebackq時集合內(nèi)的符號比較:

未使用參數(shù)usebackq時:

使用參數(shù)usebackq時:

雙引號””

表示字符串,即"string"。

當(dāng)文件路徑或名稱中有空格時,用雙引號括起來。

單引號’’

表示執(zhí)行命令,即'command' 。

表示字符串,即'string' 。

后引號``

(未研究)

表示命令執(zhí)行,即`command`。

練習(xí):

1、請簡要談?wù)勈褂?/span>usebackq選項時集合內(nèi)的標(biāo)點符號該如何表達(dá)。

2、如何修改才能打開騰訊游戲?:

@echo off

FOR /F "usebackq delims==" %%i IN (C:\Program Files\Tencent\QQGame\QQGame.exe) DO @echo %%i

pause>nul

3、請說說集合內(nèi)的“歡迎訪問甲兵時代的博客”是字符號、文件名,還是命令?

@echo off

FOR /F "usebackq delims==" %%i IN (‘歡迎訪問甲兵時代的博客’) DO @echo %%i& start iexplore.exe hi.baidu.com\cjiabing

pause>nul
 
注:此文非本人原創(chuàng),屬于轉(zhuǎn)載?。。。?/div>
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多