trudogolik
@trudogolik
саморазвитие, личностный рост

Как массово выделить в папке только те файлы, которые перечислены в файле Excel?

В папке есть 395 файлов-картинок, в Excel есть имена 159 картинок из этой папки.
Как выделить МАССОВО в папке только те файлы, которые перечислены в файле Excel?
  • Вопрос задан
  • 1061 просмотр
Решения вопроса 1
DamianLewis
@DamianLewis
Я предложу решение которое может оказаться нестандартным, но которое окажется очень полезным для решение не только данной задачи, но и для решения других задач в будущем которые могут возникнуть.

Выполнив эту инструкцию, вы по желанию переместите, удалите или скопируете все файлы из папки где у Вас хранятся 395 картинок, оставив там только нужные 159. Дальше можете делать с этими файлами что хотите.

0. Делаем копию всех 395 картинок на всякий случай.

1. Копируем список из файла Excel в обычный текстовый документ и сохраняем его в папке где у нас 395 картинок. Переименуем его к примеру excel.txt
Скрин
62b3fdd08827b767749983.jpeg


2. Запускаем Командную строку в папке где у нас 395 картинок и файл excel.txt, затем выполняем команду подставив свои пути:
for /f "tokens=* delims=" %a in ('dir /b C:\Test\* ^| findstr /v /g:excel.txt') do (move "c:\test\%~a" C:\)


Где:
C:\Test\* - путь, где у вас лежат 395 файлов-картинок
excel.txt - список файлов из Excel
move - переместить. Можете использовать команду copy или del для копирования и удаления соответственно.
В самом конце команды, при перемещении или копировании нужно указать путь. Для примера указан путь C:\ move "c:\test\%~a" C:\
Если удаляете файлы, то просто вместо move пищите del и убираете путь
Вот так:
for /f "tokens=* delims=" %a in ('dir /b C:\Test\* ^| findstr /v /g:excel.txt') do (del "c:\test\%~a")


Демонстрация перемещения файлов которые отсутствуют в нашем файле excel.txt
До перемещения
62b4060656f22413649715.jpeg


После перемещения
62b4061b9d4ac201503666.jpeg


В папке где было 395 картинок останется только 159 картинок из документа Excel. Остальные скопированы/перемещены или удалены. На усмотрение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Linux-way:
Excel => CSV | sort > list1.txt
ls > list2.txt
comm -12 list1.txt list2.txt
И получаем список того, что есть и в Excel, и в папке.
На Виндах ls заменяется dir, первый список можно сначала отсортировать самим Ёкселем... а вот чем их там сравнивать - даже не знаю.
Ответ написан
Комментировать
@Iskin100
Здравствуйте! Ооочень заинтересовала данная тема
for /f "tokens=* delims=" %a in ('dir /b C:\Test\* ^| findstr /v /g:excel.txt') do (move "c:\test\%~a" C:\)

Вставляю код в командную строку, Винда ругается на переменную for.
Возможно сбой из-за версии, у меня Windows 10 Pro. Как можно поправить команду?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы