Board logo

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

作者: 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虽然理解意思,但我还是不太懂得运用。
最后一个是我搞错了。真是对不起。