Batch file 如何比较批处理脚本中两个命令的输出

Batch file 如何比较批处理脚本中两个命令的输出,batch-file,Batch File,我有一个批处理脚本来为我的Subversion备份运行hotcopy。像这样: SET REPOS=D:\Repos SET BACKUP=C:\Backup FOR /f %%s IN('DIR /b /a:d %REPOS%') DO ( svnadmin hotcopy %REPOS%\%%s %BACKUP%\%%s ) 我想添加一个条件检查,以便仅在存储库发生更改时才运行hotcopy。类似于以下伪代码: if (svnlook youngest repo1 != svnloo

我有一个批处理脚本来为我的Subversion备份运行hotcopy。像这样:

SET REPOS=D:\Repos
SET BACKUP=C:\Backup

FOR /f %%s IN('DIR /b /a:d %REPOS%') DO (
  svnadmin hotcopy %REPOS%\%%s %BACKUP%\%%s
)
我想添加一个条件检查,以便仅在存储库发生更改时才运行hotcopy。类似于以下伪代码:

if (svnlook youngest repo1 != svnlook youngest backup1) {
  //do hotcopy as above
}
如何在批处理脚本中实现这一点?例如,如何比较批处理脚本中两个命令的输出?

未测试(我没有执行此操作的环境),但这是框架

@echo off
    setlocal enableextensions enabledelayedexpansion

    set "REPOS=D:\Repos"
    set "BACKUP=C:\Backup"

    for /d %%r in ("%REPOS%") do (

        set "sourceVersion="
        for /f %%a in ('svnlook youngest "%%~fr"') do set "sourceVersion=%%a"

        set "targetVersion="
        for /f %%a in ('svnlook youngest "%BACKUP%\%%~nxr"') do set "targetVersion=%%a"

        if not "!sourceVersion!"=="!targetVersion!" (
            svnadmin hotcopy "%%~fr" "%BACKUP%\%%~nxr"
        )
    )