我想解析一个目录,当新文件出现时,它应该列在另一个批处理的队列中。
我尝试过这样:
@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
有人可以帮我吗?
答案 0 :(得分:1)
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
该程序只管理将新文件添加到上一个树的情况;如果任何文件被删除,它将失败。
答案 1 :(得分:0)
我不确定这与bash有什么关系,因为它看起来像一个Windows批处理文件。如果您只想在开始时按照自己的意思行事,请尝试使用ROBOCOPY仅复制新文件。