Если команда в cmd - PullRequest
       3

Если команда в cmd

0 голосов
/ 27 апреля 2018

Я работаю в 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-й параметр, который является числом, и я хочу, чтобы он (очевидно, отражал ДА!), Только если число строк в файле больше, чем число, отправленное в качестве параметра. Тем не менее, мой код ниже не работает (я пробовал много решений, которые включают (["'и т. Д.), Но я не могу заставить его работать.

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

Вы можете мне помочь? :)

1 Ответ

0 голосов
/ 27 апреля 2018

Ну вот, выглядело немного иначе.

Сюда входят фильтры, предотвращающие чтение командой 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.
        )
    )
)

(Помните, что сценарий был разработан для приема определенного формата и порядка входных параметров) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...