[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 新手求助批处理命令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
复制代码
本人基本知识有一点点,但上述三行不是非常理解。
求解:这三行语句的意思。
谢谢。

先说第一行吧,哪里不理解?

TOP

回复 2# DAIC
我对第一行的理解:
findstr /c:"batch_args" %input% | findstr /c:"\-t" > batch_args.txt
在我的输入文件中,寻找字符串“batch_args”
继续寻找?字符串“\-t”,并将字符串“-t”写入文件batch_args.txt中
|命令在这里的作用是什么?第一行后半段我的理解对不对?
谢谢

TOP

回复 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

TOP

回复 4# DAIC
看了你的命令和输出结果,这一行懂了。

新出现一个问题,为啥我运行第二个命令
findstr /c:"batch_args" a.txt
的时候,会出现无数个进程cmd.exe,就像中毒一样,电脑内存直接爆了。

方便的话,加Q,742112634

TOP

回复 5# EVAHI


不要把脚本命名为findstr.bat
就用test.bat吧

TOP

回复 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,求解。

TOP

回复 7# EVAHI


\是转义字符,在这个例子中,\-t和-t得到的结果相同。

TOP

回复 7# EVAHI


?是通配符,比如你有多个类似的文件:
d:\Test>dir /b batch_arg?.txt
batch_arg1.txt
batch_arg2.txt
batch_arg3.txt

那个for命令的作用是检查一下这些文件里面是否有空文件。

TOP

回复 9# DAIC
批处理的转义字符是"^"而不是"\"
"\"貌似是和字符串有关的东西,网上也没查到什么有用的资料。
能详细解释一下"\"的用途吗?

TOP

回复 10# EVAHI


^是大部分情况下的转义字符
%是%的转义字符
\是正则表达式里面的转义字符

TOP

返回列表