Board logo

标题: [其他] 新手求助批处理命令findstr及for [打印本页]

作者: EVAHI    时间: 2013-9-16 11:03     标题: 新手求助批处理命令findstr及for

  1. findstr /c:"batch_args" %input% | findstr /c:"\-t" > batch_args.txt
  2. for %%f in (batch_arg?.txt) do if %%~zf GTR 0 set NEWTMP=no
  3. 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://bathome.net./) Powered by Discuz! 7.2