Сортировка списка файлов в окнах

342
GeoffMarbella

Есть список цветных фотографий из Hatton1.jpgк Hatton72.jpgкаждой фотографии имеет одинаковый черный и белый один с именем Hatton1-2.jpgчерезHatton72-2.jpg

Есть ли способ вырезать файлы -2 в отдельный каталог?

-1

3 ответа на вопрос

1
Keltari

Используйте moveкоманду с соответствующими аргументами:

переместить * -2.jpg c: \ somefolder

1
AFH

Это немного сложно, из-за коротких имен файлов: -

  • Чтобы поддерживать некоторую совместимость со старыми программами, которые могли обрабатывать только короткие имена файлов, Windows предоставляет альтернативное имя 8.3 для каждого более длинного имени файла.
  • Имена 8.3 имеют формат *~N.???, где *начинается имя файла и Nявляется целым числом (там, где есть несколько столкновений) - см dir /x.
  • К сожалению, поиск *~2.*найдет некоторые из этих коротких имен, а также файлы, которые вы хотите, с *~2.*длинным именем.

В cmd, перейдите в каталог с файлами: вы можете перечислить те, которые вы хотите переместить:

dir /b | findstr "~2.jpg" 

В идеале вы должны иметь возможность использовать:

for /f %f in ('dir /b | findstr "~2.jpg"') do move "%f" NewDirPath 

К сожалению, опять же, вы не можете использовать канал во встроенной команде в forцикле, поэтому вам нужно использовать две команды (или три, чтобы удалить временный файл):

dir /b > Files.lst for /f %f in ('findstr "~2.jpg" Files.txt') do move "%f" NewDirPath del Files.lst 

Это не очень элегантное решение, но вы, вероятно, делаете это только один раз. Если вам нужно сделать это несколько раз, поместите команды в командный файл и убедитесь, что вы %удвоили переменную в цикле:

... for /f %%f in ('findstr "~2.jpg" Files.txt') do move "%%f" NewDirPath ... 
А что не так на ходу * -2.jpg? Почему вместо этого нужно это сложное решение? duDE 6 лет назад 0
@duDE - я думал, что ясно дал понять: `move * -2.jpg` может перемещать ненужные файлы с соответствующими короткими именами. AFH 6 лет назад 0
Извините, AFH, я вижу это сейчас :) +1 duDE 6 лет назад 0
0
Seth

Используя PowerShell вы можете использовать Get-ChildItemвместе с Move-item.

Это будет выглядеть примерно так:

Get-ChildItem -Filter '*-2.jpg' -Recurse | % 

Я не тестировал этот код, но он должен быть очень похожим. Использование обычного поиска Windows и перетаскивания файлов также, вероятно, будет работать.

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