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