windows - hvis kommando i cmd

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder i cmd, og jeg har brug for lidt hjælp. Jeg ønsker at ændre denne kode (som fungerer):


@echo off
for /f \%\%a in ('findstr /s /m \%3 "\%1*.\%2"') do (
findstr /S /R /N "^" "\%\%a" | find /C ":"
)


Så denne kode har 3 parametre (1.path, 2.extension og 3. string) og søger kun efter filer, der indeholder den pågældende streng. Søgningen udføres i den mappe, der sendes som parameter og alle undermapper. Denne kode viser, hvor mange linjer hver fil kun har, hvis filen indeholder den streng, der er sendt som parameter.
Nu vil jeg ændre denne kode på en måde, så jeg kan sende 4. parameter, som er et tal, og jeg vil have det til (naturligvis ekko JA!), Hvis antallet af linjer i filen er større end det antal, der er sendt som parameter. Men min kode nedenunder fungerer ikke (jeg har forsøgt mange løsninger, der indeholder ([['' osv.), Men jeg kan ikke få det til at fungere.


 @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!
) 


Kan du hjælpe mig? :)

Bedste reference


Her går du, lavet til at se lidt anderledes ud.


Dette omfatter filtre for at forhindre kommandoen Dir fra at læse mapper, systemfiler og reparsepunkter også:


@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.
        )
    )
)





Dette bruger FindStr som i dit eksempel, men det er lidt langsommere:


@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.
        )
    )
)


(Husk at scriptet er designet til at acceptere specifikt format og rækkefølge af inputparametre) .