标题: [其他] 新手求助批处理命令findstr及for [打印本页]
作者: EVAHI 时间: 2013-9-16 11:03 标题: 新手求助批处理命令findstr及for
- findstr /c:"batch_args" %input% | findstr /c:"\-t" > batch_args.txt
- for %%f in (batch_arg?.txt) do if %%~zf GTR 0 set NEWTMP=no
- for %%f in (batch_arg?.txt) do if %%~zf GTR 0 set RMTMP=no
复制代码
本人基本知识有一点点,但上述三行不是非常理解。
求解:这三行语句的意思。
谢谢。
作者: DAIC 时间: 2013-9-16 13:24
先说第一行吧,哪里不理解?
作者: EVAHI 时间: 2013-9-16 14:19
回复 2# DAIC
我对第一行的理解:
findstr /c:"batch_args" %input% | findstr /c:"\-t" > batch_args.txt
在我的输入文件中,寻找字符串“batch_args”
继续寻找?字符串“\-t”,并将字符串“-t”写入文件batch_args.txt中
|命令在这里的作用是什么?第一行后半段我的理解对不对?
谢谢
作者: DAIC 时间: 2013-9-16 14:40
回复 3# EVAHI
|的作用是,把左边命令的结果传递给右边的命令,作为右边命令的输入。
d:\Test>type a.txt
1 batch_args \-t
2 batch_args -t
3 batch_args
4 batch -t
d:\Test>findstr /c:"batch_args" a.txt
1 batch_args \-t
2 batch_args -t
3 batch_args
d:\Test>findstr /c:"batch_args" a.txt | findstr /c:"\-t"
1 batch_args \-t
2 batch_args -t
作者: EVAHI 时间: 2013-9-16 14:57
回复 4# DAIC
看了你的命令和输出结果,这一行懂了。
新出现一个问题,为啥我运行第二个命令
findstr /c:"batch_args" a.txt
的时候,会出现无数个进程cmd.exe,就像中毒一样,电脑内存直接爆了。
方便的话,加Q,742112634
作者: DAIC 时间: 2013-9-16 15:24
回复 5# EVAHI
不要把脚本命名为findstr.bat
就用test.bat吧
作者: EVAHI 时间: 2013-9-16 15:43
回复 6# DAIC
帅呆了,这都被你知道了,…… 震惊了,我
问题继续,呵呵……
问题一:
命令行里面寻找的是"\-t“,为什么执行的时候,找的却是"-t"?
问题二:
关于第二行的理解:
for %%f in (batch_arg?.txt) do if %%~zf GTR 0 set NEWTMP=no
在文件batch_arg?.txt中循环变量%%f,当文件容量大于0,就设定NEWTMP=no
妈呀,我的理解好抽象,自己都不懂,大神DAIC,求解。
作者: DAIC 时间: 2013-9-16 16:11
回复 7# EVAHI
\是转义字符,在这个例子中,\-t和-t得到的结果相同。
作者: DAIC 时间: 2013-9-16 16:14
回复 7# EVAHI
?是通配符,比如你有多个类似的文件:
d:\Test>dir /b batch_arg?.txt
batch_arg1.txt
batch_arg2.txt
batch_arg3.txt
那个for命令的作用是检查一下这些文件里面是否有空文件。
作者: EVAHI 时间: 2013-9-16 16:28
回复 9# DAIC
批处理的转义字符是"^"而不是"\"
"\"貌似是和字符串有关的东西,网上也没查到什么有用的资料。
能详细解释一下"\"的用途吗?
作者: DAIC 时间: 2013-9-16 17:31
回复 10# EVAHI
^是大部分情况下的转义字符
%是%的转义字符
\是正则表达式里面的转义字符
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |