簡體   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