[CMD] Перемещение файлов по папкам

wrappan

Новый пользователь
Сообщения
2
Реакции
0
Доброго дня друзья!
Прошу помощи у гуру.
Что нужно:

Имеется папка с кучей картинок у каждой своё имя.jpg
требуется поместить каждую картинку в папку с таким же именем (папки заранее не подготовлены)
Например картинка 1.jpg в папку 1, картинка 2.jpg в папку 2 и т д

Всем мира!
Спасибо
 
Последнее редактирование модератором:
Здравствуйте, @wrappan !
Добро пожаловать на SafeZone.

CMD/BATCH:
@echo off
SetLocal EnableExtensions
cd /d "%~dp0"

:: укажите папку (по умолчанию - точка, текущая папка)
set folder=.

for %%a in ("%folder%\*.jpg") do 2>NUL md "%%~na" & move /y "%%a" "%%~na"

pause
 
@Dragokas, такой вопрос 2>NUL - расшифруй пожалуйста и "%%a" "%%~na" зачем два раза указывать переменные ? Один раз "%%~na" работать не будет ?
 
Последнее редактирование:
CMD/BATCH:
C:\Users\Alex>move /?
Перемещение файлов и переименование файлов и папок

Перемещение одного или более файлов:
MOVE [/Y | /-Y] [диск:][путь]имя_файла1[,...] назначение
1 - источник 2 - назначение

CMD/BATCH:
    %~I         - из переменной %I удаляются обрамляющие кавычки (")
    %~fI        - переменная %I расширяется до полного имени файла
    %~dI        - из переменной %I выделяется только имя диска
    %~pI        - из переменной %I выделяется только путь к файлу
    %~nI        - из переменной %I выделяется только имя файла
    %~xI        - из переменной %I выделяется расширение имени файла
    %~sI        - полученный путь содержит только короткие имена
    %~aI        - переменная %I расширяется до атрибутов файла
    %~tI        - переменная %I расширяется до даты /времени файла
    %~zI        - переменная %I расширяется до размера файла
    %~$ПУТЬ:I   - проводится поиск по каталогам, заданным в
                         переменной среды ПУТЬ, и переменная %I
                         заменяется на полное имя первого найденного
                         файла.  Если переменная ПУТЬ не определена или
                          в результате поиска не найден ни один файл,
                          то этот модификатор заменяется на пустую
                          строку.
%%a - полное имя объекта на текущей итерации цикла
%%~na - только имя файла (без расширения).

2>NUL - расшифруй пожалуйста
Перенаправление потока № 2 на устройство NUL. Поток №2 - это, обычно, сообщения об ошибках. Иначе говоря, игнорирование вывода в консоль ошибок.

Можно было написать иначе:
CMD/BATCH:
for %%a in ("%folder%\*.jpg") do if not exist "%%~na" md "%%~na" & move /y "%%a" "%%~na"

Один раз "%%~na" работать не будет ?
С одним аргументом работать будет, если установить целевой каталог в качестве текущего.
Т.е., если не указан второй аргумент, то команда по-умолчанию, подставит туда текущий каталог.
 
Последнее редактирование модератором:
Назад
Сверху Снизу