- Вопрос или проблема
- Ответ или решение
- Как создать папки для каждого файла и переместить файлы в соответствующие папки с помощью командной строки Windows
- Шаг 1: Открытие командной строки
- Шаг 2: Переход в нужную директорию
- Шаг 3: Генерация команд для создания папок и перемещения файлов
- Объединение команд в одну строку
- Пример работы
- Примечание по использованию
- Заключение
Вопрос или проблема
Мне нужна команда, которую можно выполнить из командной строки, чтобы создать папку для каждого файла (на основе имени файла) в каталоге, а затем переместить файл в только что созданные папки.
Пример :
Исходная папка:
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). Для этого:
- Нажмите
Win + R
, чтобы открыть окно "Выполнить". - Введите
cmd
и нажмитеEnter
.
Шаг 2: Переход в нужную директорию
Для начала вам нужно переместиться в папку, где находятся ваши файлы. Используйте команду cd
(change directory):
cd /d "путь_к_вашей_папке"
Например:
cd /d "C:\Users\User\Pictures"
Шаг 3: Генерация команд для создания папок и перемещения файлов
После того как вы оказались в правильной директории, можно начать работу. Вам понадобятся две команды для выполнения поставленной задачи:
-
Создание папок для каждого файла:
for %i in (*) do mkdir "%~ni"
-
Перемещение файлов в соответствующие папки:
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 для автоматизации процесса создания папок и перемещения в них файлов. Эта команда может значительно упростить упорядочивание ваших данных и помочь вам поддерживать порядок в файловой системе. Не забудьте протестировать команды на небольшом наборе файлов, чтобы убедиться в их функциональности перед выполнением на большом объеме данных.