Board logo

标题: 问些批处理命令问题 [打印本页]

作者: zreo     时间: 2005-11-24 20:56    标题: 问些批处理命令问题
Originally posted by willsort at 2005-10-28 10:53: Re dosfroum: :: GetCard.cmd - Get "Description" of net card that IP address is "192.168.*.*" :: Will Sort - 2005-10-28 - CMD@WinXP @echo off setlocal EnableDelayedExpansion for /f "delims=" %%s in ('ipconfig /all') do ( set line=%%s echo.!line! | findstr "Description" >nul && set CardName=!line:~44! echo.!CardName! | findstr /r "\<#[0-9]" >nul && set CardName=!CardName:~0,-3! echo.!line! | findstr "192.168." >nul && goto EchoName ) :EchoName echo CardName="%CardName%"
在这个批处理中。!这个感叹号在这里代表着什么作用 findstr /r "\<#[0-9]" 中的 "\<#[0-9]" 是什么意思
for /f "tokens=1 delims= " %f in ('tasklist ^| findstr /i "winword.exe"') do echo ..........
('tasklist ^| findstr /i "winword.exe"') 为什么这里需要这个 “^” 才可以运行这个命令,而身上面的那些命令中并不需要 还有 "tokens= delims= " 跟 "delims= tokens= "有什么区别。前后不同的作用是什么 [ Last edited by zreo on 2005-11-24 at 22:20 ]

作者: 无奈何     时间: 2005-11-24 23:36
你这些问题在相关命令的帮助里大部分都有解释的。建议应该先做初步了解。 1、开启延迟环境变量选项后,变量引用符由 “!” 代替 “%”。 2、findstr /r 中 “\<” 是限定单词边界。 3、('tasklist ^| findstr /i "winword.exe"') 中 “^” 的作用是跳脱字符 “|” 的特殊字符属性,使其作为子命令中的管道符,而不是 for ...这一句中的管道符。 4、关于"tokens= delims= " 跟 "delims= tokens= " 不知道你在哪里看到的,这两条选项全是错误的。“delims=” 和 “tokens=” 都可以单独出现时留空,前者为获取全部行,后者为不获取任何字符。两者同时出现无严格先后顺序,tokens 须作指定。

作者: zreo     时间: 2005-11-25 02:36
谢谢您的解答,对于SET这个命令的环境变量还不太懂。虽然看了很多篇。但还是不太懂得运用。就比如 set line=%line:~0,10% 后面的~0,10虽然理解意思,但我还是不太懂得运用。 最后一个是我搞错了。真是对不起。