Команда CMD для создания папки для каждого файла и перемещения файла в папку

Вопрос или проблема

Мне нужна команда, которую можно выполнить из командной строки, чтобы создать папку для каждого файла (на основе имени файла) в каталоге, а затем переместить файл в только что созданные папки.

Пример :

Исходная папка:

Dog.jpg
Cat.jpg

Следующая команда отлично работает, создавая папку для каждого имени файла в текущем рабочем каталоге.

for %i in (*) do md "%~ni"

Результат:

\Dog\
\Cat\
Dog.jpg
Cat.jpg

Мне нужно сделать еще один шаг вперед и переместить файл в папку.

Что я хочу достичь:

\Dog\Dog.jpg
\Cat\Cat.jpg

Кто-нибудь может помочь мне одной командой сделать все это?

Вторая команда будет

for %i in (*) do move "%i" "%~ni"

ИЗМ. : Добавил “” для %i, основываясь на комментарии and31415. Спасибо.

Просто выполните эти команды поочередно:

Для создания папок для каждого файла:

for %i in (*) do mkdir "%~ni"

Для перемещения каждого файла в его папку:

for %i in (*) do move "%i" "%~ni"

@echo off

cd /d "D:\RootDir" 2>nul || exit

%:^)
for %%i in =;( *.jpg, *.png, *.mp4, *.iso );= do 2>nul mkdir "%%~ni" & =;(
     move "*%%~xi" .\"%%~ni" | 2>nul findstr /ei ".*%%~xi" );= & goto %:^)

timeout /t 05 | =;( tree /f /a . | findstr ": + . -- |" );= & exit

Это сработает, если у вас есть некоторые папки, такие как: пример years\Filename.mp4

1901\Filename.mp4 
1902\Filename.mp4
1903\Filename.mp4

это перечислит все файлы первого уровня в папках; перечислит все *.mp4 и *.mkv
создаст папки второго уровня с именем файла
и переместит все файлы с одинаковым именем из папки первого уровня во вторую уровень, выполните это в главной папке лет.

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

Если у вас нет папки первого уровня ГОДЫ, вы можете просто пропустить первый for и выполнить второй шаг, выполните это в главной папке имен файлов.

for %i in (*.mp4,*.mkv) do mkdir "%~dpi%~ni" && move "%~dpi%~ni.*" "%~dpi%~ni\"

Двойная амперсанд (&&) обеспечивает то, что предыдущий mkdir %ERRORLEVEL% равен 0 для выполнения перемещения файлов

Чтобы протестировать, используйте это:

for /d %D in (*) do for %i in (%~fD\*.mp4,%~fD\*.mkv) do echo "%~dpi%~ni" && echo "%~dpi%~ni.*" "%~dpi%~ni\"

Ответ или решение

Как создать папки для каждого файла и переместить файлы в соответствующие папки с помощью командной строки Windows

В рамках данной задачи вам необходимо автоматически создавать папку для каждого файла в заданной директории и перетаскивать файлы в соответствующие папки. Это может быть полезно, когда вы хотите упорядочить ваши файлы по собственным категориям, минимизируя количество неструктурированных данных.

Шаг 1: Открытие командной строки

Прежде всего, откройте командную строку (CMD). Для этого:

  1. Нажмите Win + R, чтобы открыть окно "Выполнить".
  2. Введите cmd и нажмите Enter.

Шаг 2: Переход в нужную директорию

Для начала вам нужно переместиться в папку, где находятся ваши файлы. Используйте команду cd (change directory):

cd /d "путь_к_вашей_папке"

Например:

cd /d "C:\Users\User\Pictures"

Шаг 3: Генерация команд для создания папок и перемещения файлов

После того как вы оказались в правильной директории, можно начать работу. Вам понадобятся две команды для выполнения поставленной задачи:

  1. Создание папок для каждого файла:

    for %i in (*) do mkdir "%~ni"
  2. Перемещение файлов в соответствующие папки:

    for %i in (*) do move "%i" "%~ni"

Объединение команд в одну строку

Если вы хотите объединить обе команды в одну и выполнить их последовательно, вы можете сделать это с помощью оператора &&, который проверяет успешное выполнение первой команды перед запуском следующей:

for %i in (*) do (mkdir "%~ni" && move "%i" "%~ni")

Пример работы

Допустим, у вас есть файлы:

  • Dog.jpg
  • Cat.jpg

После выполнения приведенной выше команды, вы получите следующую структуру:

\Dog\Dog.jpg
\Cat\Cat.jpg

Примечание по использованию

  • Убедитесь, что ваши файлы не имеют пробелов в именах. Если у вас есть имена файлов, содержащие пробелы, команды в командной строке автоматически обработают их за счет использования кавычек.
  • Если вы хотите применить эту логику для определенного типа файлов (например, только для изображений), вы можете изменить (*) на более специфичный шаблон, например (*.jpg), чтобы создать папки только для файлов с расширением JPEG.

Заключение

Теперь вы знаете, как использовать команды Windows CMD для автоматизации процесса создания папок и перемещения в них файлов. Эта команда может значительно упростить упорядочивание ваших данных и помочь вам поддерживать порядок в файловой системе. Не забудьте протестировать команды на небольшом наборе файлов, чтобы убедиться в их функциональности перед выполнением на большом объеме данных.

Оцените материал
Добавить комментарий

Капча загружается...