繁体   English   中英

如果在cmd中命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM