Сортировка списка файлов в Windows
Получил список цветных фотографий от Hatton1.jpg
в Hatton72.jpg
каждая фотография имеет идентичный черно-белый Hatton1-2.jpg
через Hatton72-2.jpg
Есть ли способ вырезать файлы -2 в отдельный каталог?
3 ответа
Использовать move
Команда с соответствующими аргументами:
move * -2.jpg c: \ somefolder
Это немного сложно, из-за коротких имен файлов:-
- Чтобы поддерживать некоторую совместимость со старыми программами, которые могли обрабатывать только короткие имена файлов, 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
...
Используя PowerShell вы можете использовать Get-ChildItem
вместе с Move-item
,
Это будет выглядеть примерно так:
Get-ChildItem -Filter '*-2.jpg' -Recurse | %{Move-Item $_ C:\Target}
Я не тестировал этот код, но он должен быть очень похожим. Использование обычного поиска Windows и перетаскивание файлов также, вероятно, будет работать.