2014-02-05 3 views
1

После того, как я скопировал весь каталог с помощью xcopy, я хочу проверить, что все файлы скопированы, поскольку это часто кажется неудачным. Я пытаюсь сделать это, перейдя через каждый файл в исходный каталог, а затем проверив его в каталоге назначения.Метод для проверки 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 файлов. Есть ли причина, по которой пропустить файлы?

Thanks,

Chris.

+0

Любая основная команда копирования не работает в файлах, открытых или заблокированных в другой программе. Однако, если вы используете «Robocopy», который является заменой Xcopy, тогда он дает сводку в конце, чтобы показать статистику. – foxidrive

+0

Благодарим вас за ответ. Я заменил Robocopy и, похоже, работал несколько раз подряд. Я могу ошибаться, но я уверен, что вчера пробовал Robocopy, и это также не всегда срабатывало. Я думаю, что это было бы хорошим упражнением, чтобы выполнить эту проверку после копирования. –

+0

Robocopy предоставит вам сводку, а также установит уровень ошибок, который вы можете проверить. Если вы хотите подтвердить его вручную, что вы будете делать, если файл был скопирован, но равен нулю? Какой уровень проверки вы хотите? – foxidrive

ответ

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 
+0

Спасибо @foxidrive. С помощью этого кода на моей машине он возвращает 2 и 1, а на машине сборки он возвращает 3 и 1: - /. У меня есть альтернативный метод, который, кажется, работает, поэтому я опубликую это сейчас. –

+0

Это теперь также учитывает файлы в подкаталогах. – foxidrive

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 
+0

Кажется, что теперь это работает, если работа с машиной сборки напрямую - robocopy завершается успешно, моя проверка прошла успешно, и когда я вручную проверю, есть 594 файла. Но когда я пытаюсь вызвать скрипт с помощью программного обеспечения непрерывной интеграции Bamboo, robocopy преуспевает, моя проверка удалась, но когда я вручную проверю, есть гораздо меньше, чем 594 файла: - /. –

+0

Код, который вы указали, не даст другого ответа. Эти папки живут и меняются? Должна быть веская причина - как и в каком-то другом процессе, вставляются файлы или удаляются. – foxidrive

+0

Спасибо @foxidrive. Они будут в конечном итоге, но я проверяю это отдельно.Копия сделана так, что в момент, когда я тестирую, в обоих каталогах есть 595 файлов, если я смотрю вручную. Когда я запускаю пакетный файл с моим кодом, значения верны (595 и 595). Когда я запускаю командный файл с вашим кодом в значениях 3 и 1. Я не уверен, какая разница может быть, но, похоже, одна из них. Но даже с моим кодом все еще кажется, что проблема связана с использованием Bamboo, где файлы не копируются, но все проверки удаются, но это должна быть совершенно отдельная проблема: - /. –

Смежные вопросы