标题: 问些批处理命令问题
[打印本页]
作者: zreo
时间: 2005-11-24 20:56
标题: 问些批处理命令问题
Quote: |
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]" 是什么意思
Quote: |
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虽然理解意思,但我还是不太懂得运用。
最后一个是我搞错了。真是对不起。