[英]If command in cmd
我在cmd中工作,我需要一点帮助。 我想修改此代码(正在运行):
@echo off
for /f %%a in ('findstr /s /m %3 "%1*.%2"') do (
findstr /S /R /N "^" "%%a" | find /C ":"
)
因此,此代码具有3个参数(1.path,2.extension和3. string),并且仅搜索包含该字符串的文件。 搜索在作为参数发送的目录和所有子文件夹中进行。 仅当文件包含作为参数发送的字符串时,此代码才会显示每个文件有多少行。 现在,我想以一种可以发送第4个参数的方式来修改此代码,并且仅当文件中的行数大于作为参数发送的数字时,我才希望它(显然是YES!)。 但是,下面的代码不起作用(我尝试了许多解决方案,其中包括([“'等。),但我无法使其正常工作。
@echo off
for /f %%a in ('findstr /s /m %3 "%1*.%2"') do (
if findstr /S /R /N "^" "%%a" | find /C ":" gtr %4 echo YES!
)
你能帮助我吗? :)
在这里,看起来有些不同。
这包括过滤器,以防止Dir
命令读取目录,系统文件和重新解析点:
@ECHO OFF
FOR /F "DELIMS=" %%A IN ('DIR /B /S /A:-D-S-L "%~1*.%2"') DO (
FOR /F "TOKENS=3 DELIMS=:" %%B IN ('FIND /I /C "%~3" "%%A"') DO (
IF %%B GTR %4 (
ECHO File %%A has more than %4 lines matching the string %3, it has%%B.
)
)
)
在您的示例中,它使用FindStr
,但速度稍慢一些:
@ECHO OFF
FOR /F "DELIMS=" %%A IN ('FINDSTR /S /M /I /C:"%~3" "%~1*.%2"') DO (
FOR /F "TOKENS=3 DELIMS=:" %%B IN ('FIND /I /C "%~3" "%%A"') DO (
IF %%B GTR %4 (
ECHO File %%A has more than %4 lines matching the string %3, it has%%B.
)
)
)
(请记住,该脚本旨在接受输入参数的特定格式和顺序) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.