使用 Batch 搜索文件中的日期

问题描述 投票:0回答:1

我有一个疑问:

我想使用批处理在文件中查找一些日期。

我有以下代码:

SETLOCAL ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%a in (%path%\%file%) do (
    echo %%a | findstr /I "Date:"
 )
ECHO.
PAUSE
PAUSE

使用此代码,我能够获取文件中出现的第一个日期,但随后脚本完成,我想获取文件内容中出现的所有日期,而不仅仅是一个。

我是否需要修改 for 结构或使用其他命令(而不是 findstr)?

谢谢!

windows for-loop batch-file cmd
1个回答
1
投票

如果您不需要在变量中使用日期而只想输出它们,那么只需在 cli 中执行此操作

TYPE "%path%\%file%" | FIND /I "Date:"

如果您需要找到每个日期,然后使用临时变量对其执行其他操作(并假设日期行中只有一个

:
,并且日期后面没有其他内容,您可以在
 中执行此操作cmd
脚本

@(SETLOCAL
  ECHO OFF
)

 CALL :Main

( ENDLOCAL
EXIT /b )

:Main
  For /F "Tokens=1* delims=:" %%A IN (`
    TYPE "%path%\%file%" | FIND /I "Date:"
  ') DO (
    REM if you need all the characters after "Date:" we can simply use this next line:
 
    SET "Date_Tmp_Full=%%~B"

    REM. If there may be whitespace around the value after "Date:" we can use the following method instead to trim it instead.

    For /F "tokens=*" %%_ IN ('echo %%~B') DO (
      SET "Date_Tmp=%%~_" )

     REM Your other code can go here, or you can call a function to do more instead.
     REM
     REM
  )
© www.soinside.com 2019 - 2024. All rights reserved.