牡丹灵通卡 中国工商银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低1元,最高50元;异地跨行ATM取款每笔手续费为2元+取款金额的1%,1%部分最低1元,最高50元;
异地存款手续费:按存款金额的0.5%收取手续费,最低1元,最高50元。
异地取款手续费:按取款金额的0.5%收取手续费,最低1元,最高50元。
金穗借记卡 中国农业银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低1元;异地跨行ATM取款每笔手续费为2元+取款金额的1%;
异地存款手续费:省内异地柜台:交易金额的0.5%,最低1元,最高50元;跨省异地柜台:交易金额的0.5%,最低1元,最高100元。
异地取款手续费:省内异地柜台:交易金额的1%,最低1元,最高50元;跨省异地柜台:交易金额的1%,最低1元,最高100元。
长城电子借记卡 中国银行
异地ATM取款:异地本行ATM跨行取款每笔10元;异地跨行ATM取款每笔手续费为12元;
异地存款手续费:异地本行存款只能办理汇款按当地电汇标准收取
异地取款手续费:只能在异地ATM机上取款
龙卡储蓄卡 中国建设银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的1%,最低2元;异地跨行ATM取款每笔手续费为2元+取款金额的1%,1%部分最低2元;
异地存款手续费:按存款金额的0.5%收取手续费,最低2元,最高50元。
异地取款手续费:按取款金额的0.5%收取手续费,最低2元,不设上限。
一卡通 招商银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的0.5%;异地跨行ATM取款每笔手续费为2元+取款金额的0.5%;
异地存款手续费:按存款金额的0.5%收取手续费。
异地取款手续费:按取款金额的0.5%收取手续费。
太平洋借记卡 交通银行
异地ATM取款:异地本行ATM跨行取款每笔取款金额的0.8%;异地跨行ATM取款每笔手续费为2元+取款金额的0.8%;
异地存款手续费:存款金额的万分之五,最低10元,最高50元
异地取款手续费:取款金额的1%,最低10元,最高100元
华夏卡 华夏银行
异地ATM取款:异地本行ATM机取款每笔收取手续费1元;异地跨行ATM机取款每笔收取手续费2元;
异地存款手续费:按存款金额的0.1%收取手续费,最高10元。
异地取款手续费:按取款金额的0.5%收取手续费。
东方借记卡 上海浦东发展银行
异地ATM取款:0元
异地存款手续费:0元
异地取款手续费:0元
阳光卡 中国光大银行
异地ATM取款:异地本行和跨行取款一律收取0.5%的手续费,最低5元,最高50元
异地存款手续费:按交易金额的0.5%收取手续费,最低2元,最高20元
异地取款手续费:按交易金额的0.5%收取手续费,最低5元,最高50元
民生借记卡 中国民生银行
异地ATM取款:5元/笔
异地存款手续费:0元
异地取款手续费:交易金额0.3%,最低5元
中信借记卡 中信实业银行
异地ATM取款:异地跨行收款0.5%的手续费
异地存款手续费:按交易金额的0.5%收取手续费,最高10元
异地取款手续费:按交易金额的0.5%收取手续费,最高200元
兴业卡 兴业银行
异地ATM取款:同城跨行ATM机取款前三笔免收手续费,第四笔开始每笔2元;异地本行ATM机取款免收手续费;异地跨行ATM机取款厦门、深圳、南京不收手续费,其他城市前三笔不收手续费从第四笔开始每笔收取手续费2元;
异地存款手续费:存款金额的0.1%收取手续费,最低1元,最高20元。
异地取款手续费:取款金额的0.3%收取手续费,最高500元。
理财通卡 广东发展银行
异地ATM取款:异地跨行收款1%的手续费
异地存款手续费:存款金额的万分之五,最高20元
异地取款手续费:取款金额的1%,最高10元
2009年1月8日星期四
2009年1月5日星期一
CMD/DOS下符号的作用参考(转自DOS联盟)
因关于DOS符号的总结很少,所以根据[1],经过几次整理之后,写了下面这个《CMD/DOS符号参考》,推荐新手好好看看,老手温习。
标题:[整理参考] CMD/DOS下符号的作用参考
作者:lxmxn [at] bbs.cn-dos.net
时间:2007-5-27
邮箱:lxmxn520[at]163.com
说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-dos.net/forum);
2、欢迎大家补充还未说明到的符号;
3、有任何错误还请不吝指出;
4、特别感谢 qzwqzw 对此资料提出的补充和建议。
正文开始:
__________________________________________________________________________________________
一、单符号
~
① 在for中表示使用增强的变量扩展。
② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。
③ 在set/a中表示一元运算符,将操作数按位取反。
!
① 在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。
@
① 隐藏命令行本身的回显,常用于批处理中。
$
① 在findstr命令里面表示一行的结束。
② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。
%
① 在set /a中的二元运算符,表示算术取余。
② 命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。
③ 批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。
④ 其它情况下,%将会被脱去(批处理)或保留(命令行)
^
① 取消特定字符的转义作用,比如& > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^就是显示一个字符了;
② 在set/a中的二元运算符,表示按位异或。
③ 在findstr/r的[]中表示不匹配指定的字符集。
&
① 命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。
② 在set/a中是按位与。
*
① 代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt"。
② 在set /a中的二元运算符,表示算术乘法。
③ 在findstr/r中表示将前一个字符多次匹配。
-
① 范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符。
② 在findstr/r中连接两个字符表示匹配范围。
③ -跟在某些命令的/后表示取反向的开关。
④ 在set /a中:
1.表示一个负数。
2.表示算术减运算。
+
① 主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了。
② 在set/a中的二元运算符,表示算术加法。
:
① 标签定位符,表示其后的字符串为以标签,可以作为goto命令的作用对象。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"标签后面来执行批处理命令了。
② 在%var:string1=string2%中分隔变量名和被替换字串关系。
① 管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b more"就可以逐屏的显示dir命令所输出的信息。
② 在set/a中的二元运算符,表示按位或。
③ 在帮助文档中表示其前后两个开关、选项或参数是二选一的。
/
① 表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数。
② 在set/a中表示除法。
>
① 命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去。
② 在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。
<
① 将其后面的文件的内容作为其前面命令的输入。
② 在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。
=
① 赋值符号,用于变量的赋值。比如"set a=windows"的意思意思是将"windows"这个字符串赋给变量"a"。
② 在set/a中表示算术运算,比如"set /a x=5-6*5"。
\
① 这个"\"符号在有的情况下,代表的是当前路径的根目录.比如当前目录在c:\windows\system32下,那么你"dir \"的话,就相当与"dir c:\"。
② 在findstr/r中表示正则转义字符。
,
① 在set /a中表示连续表达式的分割符。
② 在某些命令中分割元素。
.
① 在路径的\后紧跟或者单独出现时:
一个.表示当前目录。
两个.表示上一级目录。
② 在路径中的文件名中出现时:
最后的一个.表示主文件名与扩展文件名的分隔。
?
① 在findstr/r中表示在此位置匹配一个任意字符。
② 在路径中表示在此位置通配任意一个字符。
③ 紧跟在/后表示获取命令的帮助文档。
__________________________________________________________________________________________
二、多符号(符号不能分隔)
&&
① 连接两个命令,当&&前的命令成功时,才执行&&后的命令。
① 连接两个命令,当前的命令失败时,才执行后的命令。
>&
① 将一个句柄的输出写入到另一个句柄的输入中。
<&
① 从一个句柄读取输入并将其写入到另一个句柄输出中。
%%
① 两个连续的%表示在预处理中脱为一个%。
② 批处理中,在for语句的in子句之前,连续两个%紧跟一个字符(可以是字母、数字和一些特定字符),表示指定一个循
环或者遍历指标变量。
③ 批处理中,在for语句中,使用与in之前指定的指标变量相同的串,表示引用这个指标变量。
>>
① 命令重定向符,将其前面的命令的输出结果追加到其后面的设备中去。
② 在set /a中的二元运算符,表示逻辑右移。
==
① 在if命令中判断==两边的元素是否相同。
<<
① 在set /a中的二元运算符,表示逻辑左移。
+=
① 在set /a中的二元运算符。例如set /a a+=b表示将a加上b的结果赋值给a。
-=
① 在set /a中的二元运算符。例如set /a a-=b表示将a减去b的结果赋值给a。
*=
① 在set /a中的二元运算符。例如set /a a*=b表示将a乘以b的结果赋值给a。
/=
① 在set /a中的二元运算符。例如set /a a/=b表示将a除以b的结果赋值给a。
%=
① 在set /a中的二元运算符。例如set /a a%=b表示将a除以b的余数赋值给a。
【注:命令行可以直接用 set /a a%=b ,在批处理里面可以用 set /a a%%=b 。】
^=
① 在set /a中的二元运算符。例如set /a a"^="b表示将a与b按位异的结果赋值给a。
【注:这里 "^=" 加引号是为了防止^被转义,下同。】
&=
① 在set /a中的二元运算符。例如set /a a"&="b表示将a与b按位与的结果赋值给a。
=
① 在set /a中的二元运算符。例如set /a a"="b表示将a与b按位或的结果赋值给a。
<<=
① 在set /a中的二元运算符。例如set /a a"<<="b表示将a按位左移b位的结果赋值给a。
>>=
① 在set /a中的二元运算符。例如set /a a">>="b表示将a按位右移b位的结果赋值给a。
\<
① 在findstr的一般表达式中表示字的开始处。
\>
① 在findstr的一般表达式中表示字的结束处。
__________________________________________________________________________________________
三、双符号对(两个符号之间须指定字符串)
! !
① 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用。
' '
① 在for/f中表示将它们包含的内容当作命令行执行并分析其输出。
② 在for/f "usebackq"中表示将它们包含的字符串当作字符串分析。
( )
① 命令包含或者是具有优先权的界定符,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影。
② 在set /a中表示表达式分组。
" "
① 界定符,在表示带有空格的路径时常要用""来将路径括起来,在一些命令里面也需要" "符号。
② 在for/f中将表示它们包含的内容当作字符串分析。
③ 在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容。
④ 在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、、空格等不再转义。
` `
① 在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。
% %
① 使用两个单独的%包含一个字符串表示引用以此串为名的环境变量。比如一个%time%可以扩展到当前的系统时间。
[ ]
① 在帮助文档表示其中的开关、选项或参数是可选的。
② 在findstr /r中表示按其中指定的字符集匹配。
________________________________________________________________________________________
标题:[整理参考] CMD/DOS下符号的作用参考
作者:lxmxn [at] bbs.cn-dos.net
时间:2007-5-27
邮箱:lxmxn520[at]163.com
说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-dos.net/forum);
2、欢迎大家补充还未说明到的符号;
3、有任何错误还请不吝指出;
4、特别感谢 qzwqzw 对此资料提出的补充和建议。
正文开始:
__________________________________________________________________________________________
一、单符号
~
① 在for中表示使用增强的变量扩展。
② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。
③ 在set/a中表示一元运算符,将操作数按位取反。
!
① 在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。
@
① 隐藏命令行本身的回显,常用于批处理中。
$
① 在findstr命令里面表示一行的结束。
② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。
%
① 在set /a中的二元运算符,表示算术取余。
② 命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标变量。
③ 批处理中,后接一个数字表示引用本批处理当前执行时的指定的参数。
④ 其它情况下,%将会被脱去(批处理)或保留(命令行)
^
① 取消特定字符的转义作用,比如& > < ! "等,但不包括%。比如要在屏幕显示一些特殊的字符,比如> >> ^ &等符号时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^就是显示一个字符了;
② 在set/a中的二元运算符,表示按位异或。
③ 在findstr/r的[]中表示不匹配指定的字符集。
&
① 命令连接字符。比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令。
② 在set/a中是按位与。
*
① 代表任意个任意字符,就是我们通常所说的"通配符";比如想在c盘的根目录查找c盘根目录里所有的文本文件(.txt),那么就可以输入命令"dir c:\*.txt"。
② 在set /a中的二元运算符,表示算术乘法。
③ 在findstr/r中表示将前一个字符多次匹配。
-
① 范围表示符,比如日期的查找,for命令里的tokens操作中就可以用到这个字符。
② 在findstr/r中连接两个字符表示匹配范围。
③ -跟在某些命令的/后表示取反向的开关。
④ 在set /a中:
1.表示一个负数。
2.表示算术减运算。
+
① 主要是在copy命令里面会用到它,表示将很多个文件合并为一个文件,就要用到这个+字符了。
② 在set/a中的二元运算符,表示算术加法。
:
① 标签定位符,表示其后的字符串为以标签,可以作为goto命令的作用对象。比如在批处理文件里面定义了一个":begin"标签,用"goto begin"命令就可以转到":begin"标签后面来执行批处理命令了。
② 在%var:string1=string2%中分隔变量名和被替换字串关系。
① 管道符,就是将上一个命令的输出,作为下一个命令的输入."dir /a/b more"就可以逐屏的显示dir命令所输出的信息。
② 在set/a中的二元运算符,表示按位或。
③ 在帮助文档中表示其前后两个开关、选项或参数是二选一的。
/
① 表示其后的字符(串)是命令的功能开关(选项)。比如"dir /s/b/a-d"表示"dir"命令指定的不同的参数。
② 在set/a中表示除法。
>
① 命令重定向符,将其前面的命令的输出结果重新定向到其后面的设备中去,后面的设备中的内容被覆盖。比如可以用"dir > lxmxn.txt"将"dir"命令的结果输出到"lxmxn.txt"这个文本文件中去。
② 在findstr/r中表示匹配单词的右边界,需要配合转义字符\使用。
<
① 将其后面的文件的内容作为其前面命令的输入。
② 在findstr/r中表示匹配单词的左边界,需要配合转义字符\使用。
=
① 赋值符号,用于变量的赋值。比如"set a=windows"的意思意思是将"windows"这个字符串赋给变量"a"。
② 在set/a中表示算术运算,比如"set /a x=5-6*5"。
\
① 这个"\"符号在有的情况下,代表的是当前路径的根目录.比如当前目录在c:\windows\system32下,那么你"dir \"的话,就相当与"dir c:\"。
② 在findstr/r中表示正则转义字符。
,
① 在set /a中表示连续表达式的分割符。
② 在某些命令中分割元素。
.
① 在路径的\后紧跟或者单独出现时:
一个.表示当前目录。
两个.表示上一级目录。
② 在路径中的文件名中出现时:
最后的一个.表示主文件名与扩展文件名的分隔。
?
① 在findstr/r中表示在此位置匹配一个任意字符。
② 在路径中表示在此位置通配任意一个字符。
③ 紧跟在/后表示获取命令的帮助文档。
__________________________________________________________________________________________
二、多符号(符号不能分隔)
&&
① 连接两个命令,当&&前的命令成功时,才执行&&后的命令。
① 连接两个命令,当前的命令失败时,才执行后的命令。
>&
① 将一个句柄的输出写入到另一个句柄的输入中。
<&
① 从一个句柄读取输入并将其写入到另一个句柄输出中。
%%
① 两个连续的%表示在预处理中脱为一个%。
② 批处理中,在for语句的in子句之前,连续两个%紧跟一个字符(可以是字母、数字和一些特定字符),表示指定一个循
环或者遍历指标变量。
③ 批处理中,在for语句中,使用与in之前指定的指标变量相同的串,表示引用这个指标变量。
>>
① 命令重定向符,将其前面的命令的输出结果追加到其后面的设备中去。
② 在set /a中的二元运算符,表示逻辑右移。
==
① 在if命令中判断==两边的元素是否相同。
<<
① 在set /a中的二元运算符,表示逻辑左移。
+=
① 在set /a中的二元运算符。例如set /a a+=b表示将a加上b的结果赋值给a。
-=
① 在set /a中的二元运算符。例如set /a a-=b表示将a减去b的结果赋值给a。
*=
① 在set /a中的二元运算符。例如set /a a*=b表示将a乘以b的结果赋值给a。
/=
① 在set /a中的二元运算符。例如set /a a/=b表示将a除以b的结果赋值给a。
%=
① 在set /a中的二元运算符。例如set /a a%=b表示将a除以b的余数赋值给a。
【注:命令行可以直接用 set /a a%=b ,在批处理里面可以用 set /a a%%=b 。】
^=
① 在set /a中的二元运算符。例如set /a a"^="b表示将a与b按位异的结果赋值给a。
【注:这里 "^=" 加引号是为了防止^被转义,下同。】
&=
① 在set /a中的二元运算符。例如set /a a"&="b表示将a与b按位与的结果赋值给a。
=
① 在set /a中的二元运算符。例如set /a a"="b表示将a与b按位或的结果赋值给a。
<<=
① 在set /a中的二元运算符。例如set /a a"<<="b表示将a按位左移b位的结果赋值给a。
>>=
① 在set /a中的二元运算符。例如set /a a">>="b表示将a按位右移b位的结果赋值给a。
\<
① 在findstr的一般表达式中表示字的开始处。
\>
① 在findstr的一般表达式中表示字的结束处。
__________________________________________________________________________________________
三、双符号对(两个符号之间须指定字符串)
! !
① 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用。
' '
① 在for/f中表示将它们包含的内容当作命令行执行并分析其输出。
② 在for/f "usebackq"中表示将它们包含的字符串当作字符串分析。
( )
① 命令包含或者是具有优先权的界定符,比如for命令要用到这个(),我们还可以在if,echo等命令中见到它的身影。
② 在set /a中表示表达式分组。
" "
① 界定符,在表示带有空格的路径时常要用""来将路径括起来,在一些命令里面也需要" "符号。
② 在for/f中将表示它们包含的内容当作字符串分析。
③ 在for/f "usebackq"表示它们包含的内容当作文件路径并分析其文件的内容。
④ 在其它情况下表示其中的内容是一个完整的字符串,其中的>、>>、<、&、、空格等不再转义。
` `
① 在for/f中表示它们所包含的内容当作命令行执行并分析它的输出。
% %
① 使用两个单独的%包含一个字符串表示引用以此串为名的环境变量。比如一个%time%可以扩展到当前的系统时间。
[ ]
① 在帮助文档表示其中的开关、选项或参数是可选的。
② 在findstr /r中表示按其中指定的字符集匹配。
________________________________________________________________________________________
2008年12月29日星期一
什么叫DOS通配符(转自网络)
一般情况下,一条DOS命令一次处理一个文件,但是,如果使用了通配符,就可以一次处理一组文件。
而且,在用户记不准文件名时,通配符也会给以帮助。顾名思义,通配符就是代替一组文件名的符号。 (1) 通配符 "*"
请看下面一组文件名:
FORMAT.COM
KEYB.COM
EDIT.COM
MORE.COM
它们的扩展名都是COM,可以用"*.COM"来表示他们。事实上,"*.COM"代表了所有以COM为扩展名的文件。再看下面的一组文件名:
DBLSPACE.BIN
DEBUG.EXE
DOSSHELL.TXT
DOSSHELL.INI
DELTREE.EXE
它们的共同点是有一个相同的字母D位于基本名的开头,文件名"D*.*"可以代表它们。在DOS的命令行中,一条DOS命令对文件"D*.*"进行处理,就会同时处理这四个文件。所有文件可以用"*.*"来代替。
读到这里您一定了解了通配符"*"的作用,它可以代替一组字符。DOS忽略"*"所处的位和它后面的字符。注意,在命令行中键入命令名"DOS*ELL.COM"时,DOS会忽略星号后面的ELL,也就是说,星号不能精确的代替某一位字符。
(2) 通配符"?"
通配符"?"比"*"更加精确,它提供一对一的匹配,只能代替它所在位的一位字符。例如:
C:\>dir diskco??.com
这个命令是要求DOS显示所有基本名由七个或八个字符组成,前六位为DISKCO,扩展名为COM的文件。两个问号分别代替两个字符。
DOS支持的通配符只有星号和问号两个,大部分DOS命令都识别并承认通配符。二者之中,"*"更为常用
而且,在用户记不准文件名时,通配符也会给以帮助。顾名思义,通配符就是代替一组文件名的符号。 (1) 通配符 "*"
请看下面一组文件名:
FORMAT.COM
KEYB.COM
EDIT.COM
MORE.COM
它们的扩展名都是COM,可以用"*.COM"来表示他们。事实上,"*.COM"代表了所有以COM为扩展名的文件。再看下面的一组文件名:
DBLSPACE.BIN
DEBUG.EXE
DOSSHELL.TXT
DOSSHELL.INI
DELTREE.EXE
它们的共同点是有一个相同的字母D位于基本名的开头,文件名"D*.*"可以代表它们。在DOS的命令行中,一条DOS命令对文件"D*.*"进行处理,就会同时处理这四个文件。所有文件可以用"*.*"来代替。
读到这里您一定了解了通配符"*"的作用,它可以代替一组字符。DOS忽略"*"所处的位和它后面的字符。注意,在命令行中键入命令名"DOS*ELL.COM"时,DOS会忽略星号后面的ELL,也就是说,星号不能精确的代替某一位字符。
(2) 通配符"?"
通配符"?"比"*"更加精确,它提供一对一的匹配,只能代替它所在位的一位字符。例如:
C:\>dir diskco??.com
这个命令是要求DOS显示所有基本名由七个或八个字符组成,前六位为DISKCO,扩展名为COM的文件。两个问号分别代替两个字符。
DOS支持的通配符只有星号和问号两个,大部分DOS命令都识别并承认通配符。二者之中,"*"更为常用
2008年12月9日星期二
说给爱人(转自网络)
一、爱人就是爱的人,是要去爱的,不是要拿来比较。不要老说别人的老公如何如何好,别数落他没出息,你是他最最亲密的人,怎么可以这样说他。对大多数男人来说,赞赏和鼓励比辱骂更能让他有奋斗的力量。
二、不可以整天追问他爱不爱你。他若真爱你,你不必问;他若不爱你,怎么就做了你的丈夫?!如果真的不爱了,难道他会对自己的妻子明确地承认吗?除非他不想要这段婚姻了。他对你的爱,你用心去体会就品位出来了。爱是做出来的,不是说出来的。
三、不要摆脸色给对方看,一个生气的女人是很丑陋的。他工作已有许多压力,没有义务回家还非得要看你的脸色。
四、男人对自己的尊严看得比什么都重要,不管在私下里他有多么宠爱你、怕你,在人前一定要给足他面子,让他做天不怕地不怕老婆更不怕的顶天立地的男子汉。是男人就应该不大喜欢朋友们取笑他怕老婆。
五、男人大多喜欢吹牛,你就别戳破他的这个小把戏,这样可以让他们自己得到一点力量,找到一点自信,好继续人生征程后面的拼搏。虚拟的成就感能让他心情明朗起来,难道不好吗?
六、男人骨子里全都喜欢美女,看到美女会很自然的目不转睛或行注目礼。你别认为他不爱你,也别认为他好色,爱看美女是男人的本能,与品格无关。
七、不要太虚荣,不要太功利,物质的追求是无止境的,人不是活给别人看的,鞋子合不合脚只有自己知道,舒服最重要,其他的都是装饰。
八、男人为何喜欢温柔的女人,因为他们内心很脆弱,不像外表那样坚强,他们需要妻子的柔情似水,柔声细语。
九、家庭永远是第一,我们固然要对工作负责,要有职业道德,要从工作中得到乐趣,但不要做工作的奴隶。我们工作是为了更快乐地和家人在一起,享受生活、享受很重要。
十、爱人的父母就是自己的父母,将心比心,老吾老以及人之老,爱人会感受到你的真心的,因此也就会更唉你。
二、不可以整天追问他爱不爱你。他若真爱你,你不必问;他若不爱你,怎么就做了你的丈夫?!如果真的不爱了,难道他会对自己的妻子明确地承认吗?除非他不想要这段婚姻了。他对你的爱,你用心去体会就品位出来了。爱是做出来的,不是说出来的。
三、不要摆脸色给对方看,一个生气的女人是很丑陋的。他工作已有许多压力,没有义务回家还非得要看你的脸色。
四、男人对自己的尊严看得比什么都重要,不管在私下里他有多么宠爱你、怕你,在人前一定要给足他面子,让他做天不怕地不怕老婆更不怕的顶天立地的男子汉。是男人就应该不大喜欢朋友们取笑他怕老婆。
五、男人大多喜欢吹牛,你就别戳破他的这个小把戏,这样可以让他们自己得到一点力量,找到一点自信,好继续人生征程后面的拼搏。虚拟的成就感能让他心情明朗起来,难道不好吗?
六、男人骨子里全都喜欢美女,看到美女会很自然的目不转睛或行注目礼。你别认为他不爱你,也别认为他好色,爱看美女是男人的本能,与品格无关。
七、不要太虚荣,不要太功利,物质的追求是无止境的,人不是活给别人看的,鞋子合不合脚只有自己知道,舒服最重要,其他的都是装饰。
八、男人为何喜欢温柔的女人,因为他们内心很脆弱,不像外表那样坚强,他们需要妻子的柔情似水,柔声细语。
九、家庭永远是第一,我们固然要对工作负责,要有职业道德,要从工作中得到乐趣,但不要做工作的奴隶。我们工作是为了更快乐地和家人在一起,享受生活、享受很重要。
十、爱人的父母就是自己的父母,将心比心,老吾老以及人之老,爱人会感受到你的真心的,因此也就会更唉你。
2008年12月2日星期二
Linux下FTP站点同步一句话脚本。应用wget(转自网络)
很简单,如下:
引用
wget -b -m -nH ftp://user:passwd@192.168.0.1:21
简单解释:
-b:应用程序后,自动放入后台,输出日志到当前目录下wget-log文件
-m:mirror,就是镜像的意思
-nH:不产生站点的目录名,我讨厌产生那样的目录。
实现功能:单向同步,B站点为A的完全镜像。既然是同步,就不会重复下载。配合cron使用吧。
简单说一下:在同步的过程中,会在本地端,也就是B端各个层级内产生2个隐藏文件,如果只有目录的话,只产生.listing。如果有文件的话,就会产生2个文件:
.listing 用来检视目录
.tempcrc.jasfv 检视文件,并且产生CRC32的校验码,用于比对。
顺便插一句,发现man帮助真是太长了,不利于快速使用。--help倒是很好用。呵呵。
网上很多朋友,都有在找这个东西。其实只需要wget --help就会找到答案。BS自己一下,我也google了半天。
对了,产生的那个文件自己看一下。挺有意思的。我就不贴了。
追加:
想用crontab调用还是需要做些修改的。比如考虑,执行脚本的路径,和本地存放的路径,日志输出位置,所以就丰富一下命令吧。
wget -b -m -nH -P ~/localdir -o ~/logs/output.log ftp://user:passwd@192.168.0.1:21
追加2个参数
-P:指定下载后的本地存放目录位置
-o:指定输出日志的路径
引用
wget -b -m -nH ftp://user:passwd@192.168.0.1:21
简单解释:
-b:应用程序后,自动放入后台,输出日志到当前目录下wget-log文件
-m:mirror,就是镜像的意思
-nH:不产生站点的目录名,我讨厌产生那样的目录。
实现功能:单向同步,B站点为A的完全镜像。既然是同步,就不会重复下载。配合cron使用吧。
简单说一下:在同步的过程中,会在本地端,也就是B端各个层级内产生2个隐藏文件,如果只有目录的话,只产生.listing。如果有文件的话,就会产生2个文件:
.listing 用来检视目录
.tempcrc.jasfv 检视文件,并且产生CRC32的校验码,用于比对。
顺便插一句,发现man帮助真是太长了,不利于快速使用。--help倒是很好用。呵呵。
网上很多朋友,都有在找这个东西。其实只需要wget --help就会找到答案。BS自己一下,我也google了半天。
对了,产生的那个文件自己看一下。挺有意思的。我就不贴了。
追加:
想用crontab调用还是需要做些修改的。比如考虑,执行脚本的路径,和本地存放的路径,日志输出位置,所以就丰富一下命令吧。
wget -b -m -nH -P ~/localdir -o ~/logs/output.log ftp://user:passwd@192.168.0.1:21
追加2个参数
-P:指定下载后的本地存放目录位置
-o:指定输出日志的路径
2008年11月25日星期二
bat manual
1 echo 和 @@ #关闭单行回显
echo off #从下一行开始关闭回显
@echo off #从本行开始关闭回显。一般批处理第一行都是这个
echo on #从下一行开始打开回显
echo #显示当前是 echo off 状态还是 echo on 状态
echo. #输出一个”回车换行”,空白行
#(同echo, echo; echo+ echo[ echo] echo/ echo\)
2 errorlevelecho %errorlevel%
每个命令运行结束,可以用这个命令行格式查看返回码
默认值为0,一般命令执行出错会设 errorlevel 为13 dirdir #显示当前目录中的文件和子目录
dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir c: /a:d #显示 C 盘当前目录中的目录
dir c: /a:-d #显示 C 盘根目录中的文件
dir c:\ /b/p #/b只显示文件名,/p分页显示
dir *.exe /s #显示当前目录和子目录里所有的.exe文件
4 cdcd\ #进入根目录
cd #显示当前目录
cd /d d:\sdk #可以同时更改盘符和目录5 mdmd d:\a\b\c #如果 d:\a 不存在,将会自动创建中级目录
#如果命令扩展名被停用,则需要键入 mkdir \a\b\c。6 rdrd abc #删除当前目录里的 abc 子目录,要求为空目录
rd /s/q d:\temp #删除 d:\temp 文件夹及其子文件夹和文件,/q安静模式7 deldel d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件
del /q/a/f d:\temp\*.*
删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
del /q/a/f/s d:\temp\*.*
删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren
ren d:\temp tmp #支持对文件夹的重命名9 cls
清屏10 type
显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码
type *.txt #显示当前目录里所有.txt文件的内容11 copy
拷贝文件copy c:\test.txt d:\test.bak
复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bakcopy con test.txt
从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件
con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt
合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件
如果不指定 3.txt ,则保存到 1.txtcopy test.txt +
复制文件到自己,实际上是修改了文件日期12 title
设置cmd窗口的标题title 新标题 #可以看到cmd窗口的标题栏变了13 ver
显示系统版本14 label 和 vol
设置卷标vol #显示卷标
label #显示卷标,同时提示输入新卷标
label c:system #设置C盘的卷标为 system15 pause
暂停命令16 rem 和 ::
注释命令注释行不执行操作17 date 和 time
日期和时间date #显示当前日期,并提示输入新日期,按\"回车\"略过输入
date/t #只显示当前日期,不提示输入新日期
time #显示当前时间,并提示输入新时间,按\"回车\"略过输入
time/t #只显示当前时间,不提示输入新时间18 goto 和 :
跳转命令:label #行首为:表示该行是标签行,标签行不执行操作
goto label #跳转到指定的标签那一行19 find (外部命令)
查找命令find \"abc\" c:\test.txt
在 c:\test.txt 文件里查找含 abc 字符串的行
如果找不到,将设 errorlevel 返回码为1find /i “abc” c:\test.txt
查找含 abc 的行,忽略大小写find /c \"abc\" c:\test.txt
显示含 abc 的行的行数20 more (外部命令)
逐屏显示more c:\test.txt #逐屏显示 c:\test.txt 的文件内容21 tree
显示目录结构tree d:\ #显示D盘的文件目录结构22 &
顺序执行多条命令,而不管命令是否执行成功23 &&
顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令find \"ok\" c:\test.txt && echo 成功
如果找到了\"ok\"字样,就显示\"成功\",找不到就不显示24 ||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令find \"ok\" c:\test.txt || echo 不成功
如果找不到\"ok\"字样,就显示\"不成功\",找到了就不显示25 |
管道命令dir *.* /s/a | find /c \".exe\"
管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令
该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more
这个和 more c:\test.txt 的效果是一样的26 > 和 >>
输出重定向命令> 清除文件中原有的内容后再写入
>> 追加内容到文件末尾,而不会清除原有的内容
主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件type c:\test.txt >prn
屏幕上不显示文件内容,转向输出到打印机echo hello world>con
在屏幕上显示hello world,实际上所有输出都是默认 >con 的copy c:\test.txt f: >nul
拷贝文件,并且不显示\"文件复制成功\"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul
不显示”文件复制成功”的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt
生成的文件内容为 ^W > W
^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号27 <
从文件中获得输入信息,而不是从屏幕上一般用于 date time label 等需要等待输入的命令
@echo off
echo 2005-05-01>temp.txt
date del temp.txt
这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令行传递给批处理的参数%0 批处理文件本身
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号(\"),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
可以参照 call/? 或 for/? 看出每个参数的含意echo load \"%%1\" \"%%2\">c:\test.txt
生成的文件内容为 load \"%1\" \"%2\"
批处理文件里,用这个格式把命令行参数输出到文件29 if
判断命令if \"%1\"==\"/a\" echo 第一个参数是/aif /i \"%1\" equ \"/a\" echo 第一个参数是/a
/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?if exist c:\test.bat echo 存在c:\test.bat文件if not exist c:\windows (
echo 不存在c:\windows文件夹
)if exist c:\test.bat (
echo 存在c:\test.bat
) else (
echo 不存在c:\test.bat
)30 setlocal 和 endlocal
设置”命令扩展名”和”延缓环境变量扩充”SETLOCAL ENABLEEXTENSIONS #启用\"命令扩展名\"
SETLOCAL DISABLEEXTENSIONS #停用\"命令扩展名\"
SETLOCAL ENABLEDELAYEDEXPANSION #启用\"延缓环境变量扩充\"
SETLOCAL DISABLEDELAYEDEXPANSION #停用\"延缓环境变量扩充\"
ENDLOCAL #恢复到使用SETLOCAL语句以前的状态“命令扩展名”默认为启用
“延缓环境变量扩充”默认为停用
批处理结束系统会自动恢复默认值可以修改注册表以禁用\"命令扩展名\",详见 cmd /? 。所以用到\"命令扩展名\"的程
序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确
保程序能在其它系统上正确运行\"延缓环境变量扩充\"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程31 set
设置变量引用变量可在变量名前后加 % ,即 %变量名%set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3% #显示前3个字符,即aa1
echo %p:~-2% #显示最后面的2个字符,即b2
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10 #用 /a 参数时,在 = 后面的变量可以不加%直接引用
set /a p=”1&0″ #”与”运算,要加引号。其它支持的运算符参见set/?
set p= #取消p变量set /p p=请输入
屏幕上显示”请输入”,并会将输入的字符串赋值给变量p
注意这条可以用来取代 choice 命令注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
@echo off
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo %p%
)
结果将显示
aaa
aaa
因为在读取 if 语句时已经将所有 %p% 替换为aaa
这里的\"替换\",在 /? 帮助里就是指\"扩充\"、\"环境变量扩充\"
可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo !p!
)
ENDLOCAL
结果将显示
aaa
bbb还有几个动态变量,运行 set 看不到
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前 ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行
可以用echo命令查看每个变量值,如 echo %time%
注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到32 start
批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令33 call
批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行
有时有的应用程序用start调用出错的,也可以call调用34 choice (外部命令)
选择命令让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……
win98里是choice.com
win2000pro里没有,可以从win98里拷过来
win2003里是choice.exechoice /N /C y /T 5 /D y>nul
延时5秒35 assoc 和 ftype
文件关联assoc 设置'文件扩展名'关联,关联到'文件类型'
ftype 设置'文件类型'关联,关联到'执行程序和参数'当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开
而是先判断.txt属于 txtfile '文件类型'
再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1可以在\"文件夹选项\"→\"文件类型\"里修改这2种关联assoc #显示所有'文件扩展名'关联
assoc .txt #显示.txt代表的'文件类型',结果显示 .txt=txtfile
assoc .doc #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
assoc .exe #显示.exe代表的'文件类型',结果显示 .exe=exefile
ftype #显示所有'文件类型'关联
ftype exefile #显示exefile类型关联的命令行,结果显示 exefile=\"%1\" %* assoc .txt=Word.Document.8
设置.txt为word类型的文档,可以看到.txt文件的图标都变了assoc .txt=txtfile
恢复.txt的正确关联
ftype exefile=\"%1\" %*
恢复 exefile 的正确关联
如果该关联已经被破坏,可以运行 command.com ,再输入这条命令36 pushd 和 popd
切换当前目录@echo off
c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹
md d:\mp4 #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4 #更改当前目录为 d:\mp4
pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3
popd #恢复当前目录为刚才保存的 d:\mp437 for
循环命令这个比较复杂,请对照 for/? 来看for %%i in (c: d: e: f:) do echo %%i
依次调用小括号里的每个字符串,执行 do 后面的命令
注意%%i,在批处理中 for 语句调用参数用2个%
默认的字符串分隔符是\"空格键\",\"Tab键\",\"回车键\"for %%i in (*.txt) do find \"abc\" %%i
对当前目录里所有的txt文件执行 find 命令for /r . %%i in (*.txt) do find \"abc\" %%i
在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行for /r . %%i in (.) do echo %%~pni
显示当前目录名和所有子目录名,包括路径,不包括盘符for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt
把 d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去for /l %%i in (2,1,8) do echo %%i
生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1for /f %%i in ('set') do echo %%i
对 set 命令的输出结果循环调用,每行一个for /f \"eol=P\" %%i in ('set') do echo %%i
取 set 命令的输出结果,忽略以 P 开头的那几行for /f %%i in (d:\mp3.txt) do echo %%i
显示 d:\mp3.txt 里的每个文件名,每行一个,不支持带空格的名称for /f \"delims=\" %%i in (d:\mp3.txt) do echo %%i
显示 d:\mp3.txt 里的每个文件名,每行一个,支持带空格的名称for /f \"skip=5 tokens=4\" %%a in ('dir') do echo %%a
对 dir 命令的结果,跳过前面5行,余下的每行取第4列
每列之间的分隔符为默认的\"空格\"
可以注意到 dir 命令输出的前5行是没有文件名的for /f \"tokens=1,2,3 delims=- \" %%a in ('date /t') do (
echo %%a
echo %%b
echo %%c
)
对 date /t 的输出结果,每行取1、2、3列
第一列对应指定的 %%a ,后面的 %%b 和 %%c 是派生出来的,对应其它列
分隔符指定为 - 和\"空格\",注意 delims=- 后面有个\"空格\"
其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的for /f \"tokens=2* delims=- \" %%a in ('date /t') do echo %%b
取第2列给 %%a ,其后的列都给 %%b32 subst (外部命令)
映射磁盘。subst z: \server\d #这样输入z:就可以访问\server\d了
subst z: /d #取消该映射
subst #显示目前所有的映时38 xcopy (外部命令)
文件拷贝xcopy d:\mp3 e:\mp3 /s/e/i/y
复制 d:\mp3 文件夹、所有子文件夹和文件到 e:\ ,覆盖已有文件
加 /i 表示如果 e:\ 没有 mp3 文件夹就自动新建一个,否则会有询问
echo off #从下一行开始关闭回显
@echo off #从本行开始关闭回显。一般批处理第一行都是这个
echo on #从下一行开始打开回显
echo #显示当前是 echo off 状态还是 echo on 状态
echo. #输出一个”回车换行”,空白行
#(同echo, echo; echo+ echo[ echo] echo/ echo\)
2 errorlevelecho %errorlevel%
每个命令运行结束,可以用这个命令行格式查看返回码
默认值为0,一般命令执行出错会设 errorlevel 为13 dirdir #显示当前目录中的文件和子目录
dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件
dir c: /a:d #显示 C 盘当前目录中的目录
dir c: /a:-d #显示 C 盘根目录中的文件
dir c:\ /b/p #/b只显示文件名,/p分页显示
dir *.exe /s #显示当前目录和子目录里所有的.exe文件
4 cdcd\ #进入根目录
cd #显示当前目录
cd /d d:\sdk #可以同时更改盘符和目录5 mdmd d:\a\b\c #如果 d:\a 不存在,将会自动创建中级目录
#如果命令扩展名被停用,则需要键入 mkdir \a\b\c。6 rdrd abc #删除当前目录里的 abc 子目录,要求为空目录
rd /s/q d:\temp #删除 d:\temp 文件夹及其子文件夹和文件,/q安静模式7 deldel d:\test.txt #删除指定文件,不能是隐藏、系统、只读文件
del /q/a/f d:\temp\*.*
删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录
del /q/a/f/s d:\temp\*.*
删除 d:\temp 及子文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录8 ren
ren d:\temp tmp #支持对文件夹的重命名9 cls
清屏10 type
显示文件内容type c:\boot.ini #显示指定文件的内容,程序文件一般会显示乱码
type *.txt #显示当前目录里所有.txt文件的内容11 copy
拷贝文件copy c:\test.txt d:\test.bak
复制 c:\test.txt 文件到 d:\ ,并重命名为 test.bakcopy con test.txt
从屏幕上等待输入,按 Ctrl+Z 结束输入,输入内容存为test.txt文件
con代表屏幕,prn代表打印机,nul代表空设备copy 1.txt + 2.txt 3.txt
合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件
如果不指定 3.txt ,则保存到 1.txtcopy test.txt +
复制文件到自己,实际上是修改了文件日期12 title
设置cmd窗口的标题title 新标题 #可以看到cmd窗口的标题栏变了13 ver
显示系统版本14 label 和 vol
设置卷标vol #显示卷标
label #显示卷标,同时提示输入新卷标
label c:system #设置C盘的卷标为 system15 pause
暂停命令16 rem 和 ::
注释命令注释行不执行操作17 date 和 time
日期和时间date #显示当前日期,并提示输入新日期,按\"回车\"略过输入
date/t #只显示当前日期,不提示输入新日期
time #显示当前时间,并提示输入新时间,按\"回车\"略过输入
time/t #只显示当前时间,不提示输入新时间18 goto 和 :
跳转命令:label #行首为:表示该行是标签行,标签行不执行操作
goto label #跳转到指定的标签那一行19 find (外部命令)
查找命令find \"abc\" c:\test.txt
在 c:\test.txt 文件里查找含 abc 字符串的行
如果找不到,将设 errorlevel 返回码为1find /i “abc” c:\test.txt
查找含 abc 的行,忽略大小写find /c \"abc\" c:\test.txt
显示含 abc 的行的行数20 more (外部命令)
逐屏显示more c:\test.txt #逐屏显示 c:\test.txt 的文件内容21 tree
显示目录结构tree d:\ #显示D盘的文件目录结构22 &
顺序执行多条命令,而不管命令是否执行成功23 &&
顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令find \"ok\" c:\test.txt && echo 成功
如果找到了\"ok\"字样,就显示\"成功\",找不到就不显示24 ||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令find \"ok\" c:\test.txt || echo 不成功
如果找不到\"ok\"字样,就显示\"不成功\",找到了就不显示25 |
管道命令dir *.* /s/a | find /c \".exe\"
管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令
该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数type c:\test.txt|more
这个和 more c:\test.txt 的效果是一样的26 > 和 >>
输出重定向命令> 清除文件中原有的内容后再写入
>> 追加内容到文件末尾,而不会清除原有的内容
主要将本来显示在屏幕上的内容输出到指定文件中指定文件如果不存在,则自动生成该文件type c:\test.txt >prn
屏幕上不显示文件内容,转向输出到打印机echo hello world>con
在屏幕上显示hello world,实际上所有输出都是默认 >con 的copy c:\test.txt f: >nul
拷贝文件,并且不显示\"文件复制成功\"的提示信息,但如果f盘不存在,还是会显示出错信息copy c:\test.txt f: >nul 2>nul
不显示”文件复制成功”的提示信息,并且f盘不存在的话,也不显示错误提示信息echo ^^W ^> ^W>c:\test.txt
生成的文件内容为 ^W > W
^ 和 > 是控制命令,要把它们输出到文件,必须在前面加个 ^ 符号27 <
从文件中获得输入信息,而不是从屏幕上一般用于 date time label 等需要等待输入的命令
@echo off
echo 2005-05-01>temp.txt
date
这样就可以不等待输入直接修改当前日期28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令行传递给批处理的参数%0 批处理文件本身
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号(\"),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
可以参照 call/? 或 for/? 看出每个参数的含意echo load \"%%1\" \"%%2\">c:\test.txt
生成的文件内容为 load \"%1\" \"%2\"
批处理文件里,用这个格式把命令行参数输出到文件29 if
判断命令if \"%1\"==\"/a\" echo 第一个参数是/aif /i \"%1\" equ \"/a\" echo 第一个参数是/a
/i 表示不区分大小写,equ 和 == 是一样的,其它运算符参见 if/?if exist c:\test.bat echo 存在c:\test.bat文件if not exist c:\windows (
echo 不存在c:\windows文件夹
)if exist c:\test.bat (
echo 存在c:\test.bat
) else (
echo 不存在c:\test.bat
)30 setlocal 和 endlocal
设置”命令扩展名”和”延缓环境变量扩充”SETLOCAL ENABLEEXTENSIONS #启用\"命令扩展名\"
SETLOCAL DISABLEEXTENSIONS #停用\"命令扩展名\"
SETLOCAL ENABLEDELAYEDEXPANSION #启用\"延缓环境变量扩充\"
SETLOCAL DISABLEDELAYEDEXPANSION #停用\"延缓环境变量扩充\"
ENDLOCAL #恢复到使用SETLOCAL语句以前的状态“命令扩展名”默认为启用
“延缓环境变量扩充”默认为停用
批处理结束系统会自动恢复默认值可以修改注册表以禁用\"命令扩展名\",详见 cmd /? 。所以用到\"命令扩展名\"的程
序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确
保程序能在其它系统上正确运行\"延缓环境变量扩充\"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程31 set
设置变量引用变量可在变量名前后加 % ,即 %变量名%set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3% #显示前3个字符,即aa1
echo %p:~-2% #显示最后面的2个字符,即b2
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3
set /a p=p/10 #用 /a 参数时,在 = 后面的变量可以不加%直接引用
set /a p=”1&0″ #”与”运算,要加引号。其它支持的运算符参见set/?
set p= #取消p变量set /p p=请输入
屏幕上显示”请输入”,并会将输入的字符串赋值给变量p
注意这条可以用来取代 choice 命令注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
@echo off
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo %p%
)
结果将显示
aaa
aaa
因为在读取 if 语句时已经将所有 %p% 替换为aaa
这里的\"替换\",在 /? 帮助里就是指\"扩充\"、\"环境变量扩充\"
可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
echo %p%
set p=bbb
echo !p!
)
ENDLOCAL
结果将显示
aaa
bbb还有几个动态变量,运行 set 看不到
%CD% #代表当前目录的字符串
%DATE% #当前日期
%TIME% #当前时间
%RANDOM% #随机整数,介于0~32767
%ERRORLEVEL% #当前 ERRORLEVEL 值
%CMDEXTVERSION% #当前命令处理器扩展名版本号
%CMDCMDLINE% #调用命令处理器的原始命令行
可以用echo命令查看每个变量值,如 echo %time%
注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到32 start
批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令33 call
批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行
有时有的应用程序用start调用出错的,也可以call调用34 choice (外部命令)
选择命令让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……
win98里是choice.com
win2000pro里没有,可以从win98里拷过来
win2003里是choice.exechoice /N /C y /T 5 /D y>nul
延时5秒35 assoc 和 ftype
文件关联assoc 设置'文件扩展名'关联,关联到'文件类型'
ftype 设置'文件类型'关联,关联到'执行程序和参数'当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开
而是先判断.txt属于 txtfile '文件类型'
再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1可以在\"文件夹选项\"→\"文件类型\"里修改这2种关联assoc #显示所有'文件扩展名'关联
assoc .txt #显示.txt代表的'文件类型',结果显示 .txt=txtfile
assoc .doc #显示.doc代表的'文件类型',结果显示 .doc=Word.Document.8
assoc .exe #显示.exe代表的'文件类型',结果显示 .exe=exefile
ftype #显示所有'文件类型'关联
ftype exefile #显示exefile类型关联的命令行,结果显示 exefile=\"%1\" %* assoc .txt=Word.Document.8
设置.txt为word类型的文档,可以看到.txt文件的图标都变了assoc .txt=txtfile
恢复.txt的正确关联
ftype exefile=\"%1\" %*
恢复 exefile 的正确关联
如果该关联已经被破坏,可以运行 command.com ,再输入这条命令36 pushd 和 popd
切换当前目录@echo off
c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹
md d:\mp4 #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4 #更改当前目录为 d:\mp4
pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3
popd #恢复当前目录为刚才保存的 d:\mp437 for
循环命令这个比较复杂,请对照 for/? 来看for %%i in (c: d: e: f:) do echo %%i
依次调用小括号里的每个字符串,执行 do 后面的命令
注意%%i,在批处理中 for 语句调用参数用2个%
默认的字符串分隔符是\"空格键\",\"Tab键\",\"回车键\"for %%i in (*.txt) do find \"abc\" %%i
对当前目录里所有的txt文件执行 find 命令for /r . %%i in (*.txt) do find \"abc\" %%i
在当前目录和子目录里所有的.txt文件中搜索包含 abc 字符串的行for /r . %%i in (.) do echo %%~pni
显示当前目录名和所有子目录名,包括路径,不包括盘符for /r d:\mp3 %%i in (*.mp3) do echo %%i>>d:\mp3.txt
把 d:\mp3 及其子目录里的mp3文件的文件名都存到 d:\mp3.txt 里去for /l %%i in (2,1,8) do echo %%i
生成2345678的一串数字,2是数字序列的开头,8是结尾,1表示每次加1for /f %%i in ('set') do echo %%i
对 set 命令的输出结果循环调用,每行一个for /f \"eol=P\" %%i in ('set') do echo %%i
取 set 命令的输出结果,忽略以 P 开头的那几行for /f %%i in (d:\mp3.txt) do echo %%i
显示 d:\mp3.txt 里的每个文件名,每行一个,不支持带空格的名称for /f \"delims=\" %%i in (d:\mp3.txt) do echo %%i
显示 d:\mp3.txt 里的每个文件名,每行一个,支持带空格的名称for /f \"skip=5 tokens=4\" %%a in ('dir') do echo %%a
对 dir 命令的结果,跳过前面5行,余下的每行取第4列
每列之间的分隔符为默认的\"空格\"
可以注意到 dir 命令输出的前5行是没有文件名的for /f \"tokens=1,2,3 delims=- \" %%a in ('date /t') do (
echo %%a
echo %%b
echo %%c
)
对 date /t 的输出结果,每行取1、2、3列
第一列对应指定的 %%a ,后面的 %%b 和 %%c 是派生出来的,对应其它列
分隔符指定为 - 和\"空格\",注意 delims=- 后面有个\"空格\"
其中 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的for /f \"tokens=2* delims=- \" %%a in ('date /t') do echo %%b
取第2列给 %%a ,其后的列都给 %%b32 subst (外部命令)
映射磁盘。subst z: \server\d #这样输入z:就可以访问\server\d了
subst z: /d #取消该映射
subst #显示目前所有的映时38 xcopy (外部命令)
文件拷贝xcopy d:\mp3 e:\mp3 /s/e/i/y
复制 d:\mp3 文件夹、所有子文件夹和文件到 e:\ ,覆盖已有文件
加 /i 表示如果 e:\ 没有 mp3 文件夹就自动新建一个,否则会有询问
2008年11月24日星期一
DOS(windows命令行)截取变量中字符串问题的详细说明
为了说明截取变量中字符串的问题曾经举过如下这个例子:
@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause
为了说明这个问题,我在这里把批处理取字符,做下进一步的解释,希望对新手有所启发
如下:
echo %var:~n,k%
我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:指针和偏移地址都是从零开始数的)
我们还是用namejm版主的例子做下说明:
@echo off
set str=123456789
rem 定义一个str字符串为123456789
echo 第一个字符为:%str:~0,1%
rem 指针为0,偏移地址为1,即从第0位开始,取1位
echo 头两个字符为:%str:~0,2%
rem 指针为0,偏移地址为2,即从第0位开始,取2位
echo 头5个字符为:%str:~0,5%
rem 指针为0,偏移地址为5,即从第0位开始,取5位
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去
后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符
为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
rem 该句解释同上↑
echo 最后一个字符为:%str:~-1%
rem 参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部
echo 倒数第4个及其之后的字符为:%str:~-4%
rem 解释同上↑
echo 最后一个字符为:%str:~-1,1%
rem n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数)
echo 最后一个字符为:%str:~-1,2%
rem 解释同上↑
echo 倒数第4个字符为:%str:~-4,1%
rem 解释同上↑
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
rem 解释同上↑
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
rem 解释同上↑
pause
请问dos中如何截取字符串中开头的2个字符呢?
set str=teststr
echo %str:~0,2%
即把字符串读到变量中后,然后用%var:~0,2%方式重新获取即可
//或者通过查找某个字符,然后从该字符处开始截取2个字符?
查找字符推荐使用findstr命令,具体参数请查看帮助。
findstr /?
熟练使用DOS命令,让我回归自然!
其实,DOS批处理是比较强大的,
从DOS(windows命令行)截取字符串,你会用DOS了吗?
@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause
为了说明这个问题,我在这里把批处理取字符,做下进一步的解释,希望对新手有所启发
如下:
echo %var:~n,k%
我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:指针和偏移地址都是从零开始数的)
我们还是用namejm版主的例子做下说明:
@echo off
set str=123456789
rem 定义一个str字符串为123456789
echo 第一个字符为:%str:~0,1%
rem 指针为0,偏移地址为1,即从第0位开始,取1位
echo 头两个字符为:%str:~0,2%
rem 指针为0,偏移地址为2,即从第0位开始,取2位
echo 头5个字符为:%str:~0,5%
rem 指针为0,偏移地址为5,即从第0位开始,取5位
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去
后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符
为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
rem 该句解释同上↑
echo 最后一个字符为:%str:~-1%
rem 参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部
echo 倒数第4个及其之后的字符为:%str:~-4%
rem 解释同上↑
echo 最后一个字符为:%str:~-1,1%
rem n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数)
echo 最后一个字符为:%str:~-1,2%
rem 解释同上↑
echo 倒数第4个字符为:%str:~-4,1%
rem 解释同上↑
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
rem 解释同上↑
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
rem 解释同上↑
pause
请问dos中如何截取字符串中开头的2个字符呢?
set str=teststr
echo %str:~0,2%
即把字符串读到变量中后,然后用%var:~0,2%方式重新获取即可
//或者通过查找某个字符,然后从该字符处开始截取2个字符?
查找字符推荐使用findstr命令,具体参数请查看帮助。
findstr /?
熟练使用DOS命令,让我回归自然!
其实,DOS批处理是比较强大的,
从DOS(windows命令行)截取字符串,你会用DOS了吗?
订阅:
博文 (Atom)