验证xcopy的方法已复制所有文件

时间:2014-02-05 09:48:12

标签: cmd directory compare

使用xcopy复制整个目录后,我想验证是否所有文件都被复制,因为它经常会失败。我试图通过循环遍历源目录中的每个文件,然后检查它是否存在于目标目录中来实现。

我有一些似乎在我的机器上工作但似乎不在构建机器上,这是我需要的地方。

@echo off
set /a count=0
set /a count2=0
for /r "C:\work\DLS\built\Android_EU\data" %%f in (*) do (set /a count+=1
)

for /r "C:\work\DLS\TegraProject\DLS\assets" %%f in (*) do (set /a count2+=1
)

echo count is %count%
echo count 2 is %count2%

if %count%==%count2% echo equal
if not %count%==%count2% echo not equal

pause

if %count%==%count2% exit 0
if not %count%==%count2% exit 1

我手动检查了两台机器上的两个文件夹中有594个文件。

我的机器上已正确报告。

在构建机器上,它说有583和584个文件。是否有任何理由会跳过文件?

谢谢,

克里斯。

2 个答案:

答案 0 :(得分:0)

试试这个:它最多可以使用2^31 -1个文件。 :)

@echo off
set "count="
set "count2="

for /f %%a in (' dir "C:\work\DLS\built\Android_EU\data"   /s /b /a-d ^|find /c /v "" ') do set count=%%a
for /f %%a in (' dir "C:\work\DLS\TegraProject\DLS\assets" /s /b /a-d ^|find /c /v "" ') do set count2=%%a

echo count is %count%
echo count 2 is %count2%

if %count% EQU %count2% echo equal
if %count% NEQ %count2% echo not equal

pause

if %count% EQU %count2% exit 0
if not %count% NEQ %count2% exit 1

答案 1 :(得分:0)

好的,所以这似乎有效 - 感谢您输入@foxidrive。

cd C:\work\DLS\built\Android_EU\data
dir /s /b /a-d |find /c /v "" > temp.txt
set /p count=<temp.txt
cd C:\work\DLS\TegraProject\DLS\assets\data
dir /s /b /a-d |find /c /v "" > temp.txt
set /p count2=<temp.txt

echo count is %count%
echo count 2 is %count2%

pause

if %count%==%count2% exit 0
if not %count%==%count2% exit 1