Batch file Windows批比较两个路径目录并写出差异
我想解析一个目录,当新文件出现时,它应该列在其他批处理的队列中 我是这样试的:Batch file Windows批比较两个路径目录并写出差异,batch-file,compare,dir,Batch File,Compare,Dir,我想解析一个目录,当新文件出现时,它应该列在其他批处理的队列中 我是这样试的: @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%
@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
有人能帮我吗?我不确定这与bash有什么关系,因为它看起来像一个Windows批处理文件。如果您只想执行开始时说的操作,请尝试使用ROBOCOPY仅复制新文件。
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
@echo关闭
setlocal EnableDelayedExpansion
设置ftpdir=Z:\FTP\home\
设置xdir=Z:\NewDir\
设置vtree=v.txt
设置vtreecomp=vcomp.txt
:开始
如果不存在%vtree%dir%ftpdir%/S/B>%vtree%
:VCOMPTREE
目录%ftpdir%/S/B>%vtreecomp%
fc%vtree%%vtreecomp%>num
如果错误级别为1(
设置“vtreline=”
<%vtree%(
对于/F“delims=“%a in(%vtreecomp%)do(
如果未定义vtreeLine set/P vtreeLine=
如果“!vtreline!”相等“%%a”(
设置“vtreline=”
)否则(
回声%%a
)
))>queue.txt
出口
)
开始
该程序只管理将新文件添加到上一个树时的情况;如果删除任何文件,它都会失败。我不知道这个comand。但有一个问题。文件应复制到的目录具有其他结构。ROBOCOPY似乎只镜像了两个目录,不能给我一个更改列表。包含差异的文件应该像其他批处理(复制批处理)的队列一样工作。是的,只有windows批处理(键入错误)。robocopy源目标/l/mir/fp/ns/nc/ndl/njh/njsperfect!这正是我想要的。非常感谢。你是个天才:)