обратная связь от OP: метод Excel не работает для него, метод Matlab не проверен У меня есть очень не элегантное решение, но я думаю, что оно работает (при условии, что у вас есть Excel). Это работает только в том случае, если количество имен файлов соответствует Excel. (Excel имеет ограниченное максимальное количество строк: 1 048 576).
Перейти к cmd (я предполагаю, что вы находитесь на окнах). Смени каталог на первый диск. Тип:
dir /s/b/o:gn > drive1.txt
Сделайте то же самое для второго диска, но измените имя txt-файла.
Я взял строку cmd с: https://stackoverflow.com/questions/3447503/how-to-get-a-list-of-sub-folders-and-their-files-ordered-by-folder-names .
Скопируйте оба вывода в Excel (при условии, что 2007 или новее). Самый простой вариант, о котором я знаю, это следующее:
- Выберите столбцы, содержащие выходные данные cmd.
- На вкладке данных в группе «Сортировка и фильтр» нажмите «Дополнительно».
- В диалоговом окне «Расширенный фильтр» выполните одно из следующих действий:
- Чтобы отфильтровать диапазон ячеек или таблицы на месте, нажмите «Фильтровать список» на месте.
- Чтобы скопировать результаты фильтра в другое место, сделайте следующее:
- Нажмите Скопировать в другое место.
- В поле «Копировать в» введите ссылку на ячейку.
- Либо нажмите Свернуть изображение кнопки диалога, чтобы временно скрыть диалоговое окно, выберите ячейку на листе и нажмите Развернуть изображение кнопки диалога.
- Установите флажок «Только уникальные записи» и нажмите «ОК».
- Уникальные значения из выбранного диапазона копируются в новое местоположение. Исходные данные не затрагиваются.
Таким образом, у вас должен быть список всех уникальных имен файлов, который совпадает со списком всех имен файлов, которые не были скопированы.
В конце концов, процедура Excel была взята по адресу : https://support.office.com/en-us/article/Filter-for-unique-values-or-remove-duplicate-values-d6549cf0-357a-4acf-9df5- ca507915b704 # bmfilter_for_unique_values
В качестве альтернативы вы можете использовать команду cmd в Matlab.
Команда в Matlab может быть:
DosCommand=sprintf('%s %s','dir / B',directory); [status, cmdout]=dos(DosCommand); end Filenames = strread(cmdout,'%s');
Затем выполните:
NonCopiedFilenames = A(sum(bsxfun(@eq, A(:), A(:).'))==1);
Трюк с уникальными значениями был скопирован с: https://stackoverflow.com/questions/19236914/how-to-find-a-unique-value-in-a-matrix-by-using-matlab