批处理脚本以检查内容和文件名

时间:2019-01-11 11:15:41

标签: batch-file

我在批处理脚本中有一个代码,该代码将检查文件名是否相同或文件内容是否相同。而且它会将ini文件更新为0或1 0-如果文件名不同 1-如果文件名不同

下面是我的代码

@ECHO OFF
CLS
del /s C:\deep\output.log > NUL
for %%i in (C:\deep\*.DAT) do (
for /f "tokens=1,2 delims= " %%G in (app.ini) do set %%G=%%H
echo Rungmis %rungmis%
fc C:\deep\MAI_ZSYS_MOVE.DAT %%i > NUL
if errorlevel 1 (
        CALL :error
        echo C:\deep\MAI_ZSYS_MOVE.DAT and %%i are different >>output.log
        set /a rungmis=0
        echo Rungmis %rungmis%
        timeout 5
    ) ELSE (
        CALL :next
        echo C:\deep\MAI_ZSYS_MOVE.DAT and %%i are same >>output.log
        set /a rungmis=1
        echo Rungmis %rungmis%
        timeout 5
    )
)

for %%I in (rungmis) do (
 setlocal enabledelayedexpansion
 type app.ini | find /v "%%I=">settings.tmp
 move /y settings.tmp gmisapp.ini
 echo %%I=!%%I!>>app.ini

)
type app.ini
timeout 5

它正在将.ini标志(rungmis标志)更新为0或1。但是我面临的问题是,只要ini得到更新,标志(rungmis)标志就会在ini的最后一行得到更新

实际的app.ini文件

[TO_RUN_GMIS]
rungmis=1
;0 means GMIS will run
;1 means GMIS will not run


[Registry_Directories]
ArchivePath=D:\maibackup\
ImportPath=D:\gmisdata\
ExportPath=D:\www\GMIS\excel\
DataSource=GMIS_DEV_NEW

app.ini更新后

[TO_RUN_GMIS]
;0 means GMIS will run
;1 means GMIS will not run


[Registry_Directories]
ArchivePath=D:\maibackup\
ImportPath=D:\gmisdata\
ExportPath=D:\www\GMIS\excel\
rungmis=1

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

请尝试一下。

@ECHO OFF
CLS
del /s C:\deep\output.log > NUL
for %%i in (C:\deep\*.DAT) do (
for /f "tokens=1,2 delims= " %%G in (app.ini) do set %%G=%%H
echo Rungmis %rungmis%
fc C:\deep\MAI_ZSYS_MOVE.DAT %%i > NUL
if errorlevel 1 (
        CALL :error
        echo C:\deep\MAI_ZSYS_MOVE.DAT and %%i are different >>output.log
        set /a rungmis=0
        echo Rungmis %rungmis%
        timeout 5
    ) ELSE (
        CALL :next
        echo C:\deep\MAI_ZSYS_MOVE.DAT and %%i are same >>output.log
        set /a rungmis=1
        echo Rungmis %rungmis%
        timeout 5
    )
)


for /f "tokens=*" %%a in ('type "app.ini" ^| find /v /n "" ^& break ^> "app.ini"') do (
    set "str=%%a"
    setlocal enabledelayedexpansion
    set "str=!str:*]=!"
    if "!str:~0,7!"=="rungmis" set "str=!str:~0,-1!%rungmis%"
    >>app.ini echo(!str!
    endlocal
)

type app.ini
timeout 5

因此,我们只需要在文件上键入内容并添加一些其他字符,以确保我们也复制换行符。然后,在打印到文件之前,我们将这些字符除去。但是首先,我们搜索字符串rungmis,并将其值替换为您在脚本中先前确定的值。然后,每行都将替换值打印回到app.ini文件中。

相关问题