
[已解決]菜鳥的幾個小問題最后由 ligyste 于 -8-6 08:28不才最近開始學習批處理,參考各位前輩的批處理時發現一些不懂的地方,特來求教這是一段網上找到的顯示IP地址的代碼for /f tokens=2 delims=: %%i in ('ipconfig^|findstr IP Address') do echo IP地址=%%i問題1:其中的^|是什么意思啊,看教程上說^是把取消特殊字符的功能,把這個特殊字符當做一個普通字符來對待,而|是把前邊命令的結果當做后邊命令的參數,照理說這里只需要|就夠了,但是實際測試不行。問題2:把ipconfig命令的結果顯式出來的話,關鍵的一行是 IPv4 地址 . . . . . . . . . . . . : 192.168.128.1,不管是把ipconfig命令的結果直接在CMD窗口顯示出來還是用>導出到txt,都沒有發現其中包含IP Address,那么,為什么這條批處理能夠正確顯示IP地址呢?這是一段在win7下取得桌面路徑的代碼,由于注冊表的鍵值類型是reg_expand_sz,導出為文本文件后是十六進制代碼setlocal enabledelayedexpansionfor /f delims= %%i in ('reg query HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders^|findstr /i Desktop') do (set str=%%iset str=!str:*reg_expand_sz=!for /f tokens=* %%a in (!str!) do set DesktopPath=%%~a)問題3:其中reg query HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders命令中關鍵的一行結果是DesktopREG_EXPAND_SZ%USERPROFILE%Desktop其中沒有包含,那么之前的delims=中為什么要用作為分隔符呢?我改為delims= (用空格作為分隔符)后提示此時不應有 Shell。問題4:set str=!str:*reg_expand_sz=!兩邊的!是什么意思,str:*reg_expand_sz=又是什么意思?在下菜鳥一只,請各位高人不吝賜教!

