读取文件内容并检查值是否相同

时间:2014-01-23 15:13:45

标签: windows batch-file

我有一个文件位于C:\ Users \ abc \ Desktop,名为BUIBNESSDATE。 文件内容是

Updated on :
Thu Jan 23 04:05:00 IST 2014
ProfileBusinessDate=23/1/2014

NucleusBusinessDate=23/01/2014

我想要检查两个日期是否相同(ProfileBusi nessDate& NucleusBusinessDate)日期相同的脚本。如果两个日期相同,那么脚本应该将消息显示为OK,否则为NotOk。

怎么办?

3 个答案:

答案 0 :(得分:0)

测试一下:

@echo off
set "file=C:\Users\abc\Desktop\BUIBNESSDATE"
for /f "tokens=2 delims==" %%a in (' find /i "profile" ^< "%file%" ' ) do set "p=%%a"
for /f "tokens=2 delims==" %%a in (' find /i "nucleus" ^< "%file%" ' ) do set "n=%%a"

if "%p%"=="%n%" (echo OK) else (echo NotOK)

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "ppd="
SET "nbd="
FOR /f "delims=" %%a IN (q21312106.txt) DO (
 SET "line=%%a"
 CALL :process
)

IF NOT DEFINED ppd ECHO ProfileBusinessDate missing&GOTO :EOF 
IF NOT DEFINED nbd ECHO NucleusBusinessDate missing&GOTO :EOF

FOR /f "tokens=1-3delims=/" %%a IN ("%ppd%") DO CALL :slz ppdd %%a&CALL :slz ppdm %%b&CALL :slz ppdy %%c
FOR /f "tokens=1-3delims=/" %%a IN ("%nbd%") DO CALL :slz nbdd %%a&CALL :slz nbdm %%b&CALL :slz nbdy %%c

IF "%ppdd%-%ppdm%-%ppdy%"=="%nbdd%-%nbdm%-%nbdy%" (ECHO OK) ELSE (ECHO NotOk)

GOTO :EOF

:process
SET "$1=%line:*ProfileBusinessDate=%"
IF NOT "%$1%"=="%line%" SET "ppd=%$1:~1%"&GOTO :EOF 
SET "$1=%line:*NucleusBusinessDate=%"
IF NOT "%$1%"=="%line%" SET "nbd=%$1:~1%"&GOTO :EOF 
GOTO :EOF

:: suppress a leading 0

:slz
SET "$1=%2"
IF "%$1:~0,1%"=="0" (SET "%1=%$1:~1%") ELSE (SET "%1=%2")
GOTO :eof

应该完成任务。我使用q21312106.txt将您的数据作为源文件。

答案 2 :(得分:0)

@echo off
    setlocal enableextension disabledelayedexpansion
    set "pdb="
    set "nbd="
    for /f "tokens=1,2 delims==" %%a in (
        'findstr /b /l /c:"ProfileBusinessDate=" /c:"NucleusBusinessDate=" "c:\users\abc\desktop\buibnessdate"'
    ) do (
        if "%%a"=="ProfileBusinessDate" (set "pbd=%%b" ) else (set "nbd=%%b")
    )

    if "%pdb%"=="%nbd%" ( 
        echo OK 
    ) else ( 
        echo NOT OK 
    )

在文件中搜索所需的行,将它们分成等号并将值分配给已加载的变量。然后检查两个变量是否包含相同的内容。