Пакетное сравнение Windows двух каталогов пути и запишите разницу
Я хочу проанализировать каталог, и когда появятся новые файлы, он должен быть указан в очереди для другого пакета.
Я попробовал это так:
@echo off
:START
set ftpdir=Z:\FTP\home\
set xdir=Z:\NewDir\
set vtree=v.txt
set vtreecomp=vcomp.txt
if not exist %vtree% (dir %ftpdir% /S/B > %vtree%) else ( goto VCOMPTREE )
exit
:VCOMPTREE
dir %ftpdir% /S/B > %vtreecomp%
fc %vtree% %vtreecomp% > nul
if errorlevel 1 fc %vtree% %vtreecomp% >> queue.txt & exit
goto START
Но я не понимаю только разные строки. Что я получаю:
Vergleichen der Dateien v.txt und VCOMP.txt
***** v.txt
Z:\FTP\home\22.10.2013 #111
Z:\FTP\home\23.10.2013 #222
***** VCOMP.txt
Z:\FTP\home\22.10.2013 #111
Z:\FTP\home\22.10.2013 #111 - Kopie
Z:\FTP\home\23.10.2013 #222
*****
***** v.txt
***** VCOMP.txt
Z:\FTP\home\23.10.2013 #222 - Kopie
*****
Что я хочу:
Z:\FTP\home\22.10.2013 #111 - Kopie
Z:\FTP\home\23.10.2013 #222 - Kopie
Может ли кто-нибудь помочь мне с этим?
2 ответа
fc
выходные данные команды показывают различия в наборах, которые включают первую и последнюю равные строки. Если вы хотите получить только разные строки, вы должны сами сравнить файлы. Пакетная программа ниже делает это:
@echo off
setlocal EnableDelayedExpansion
set ftpdir=Z:\FTP\home\
set xdir=Z:\NewDir\
set vtree=v.txt
set vtreecomp=vcomp.txt
:START
if not exist %vtree% dir %ftpdir% /S/B > %vtree%
:VCOMPTREE
dir %ftpdir% /S/B > %vtreecomp%
fc %vtree% %vtreecomp% > nul
if errorlevel 1 (
set "vtreeLine="
< %vtree% (
for /F "delims=" %%a in (%vtreecomp%) do (
if not defined vtreeLine set /P vtreeLine=
if "!vtreeLine!" equ "%%a" (
set "vtreeLine="
) else (
echo %%a
)
)) > queue.txt
exit
)
goto START
Эта программа просто управляет случаем, когда новые файлы добавляются в предыдущее дерево; он потерпит неудачу, если какой-либо файл будет удален.
Я не уверен, как это связано с bash, потому что это похоже на пакетный файл Windows. Если вы хотите делать только то, что говорите в начале, попробуйте использовать ROBOCOPY только для копирования новых файлов.