Мне нужна команда, которую можно запустить из командной строки, чтобы создать папку для каждого файла (на основе имени файла) в каталоге, а затем переместить файл во вновь созданные папки.
Пример :
Начальная папка:
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 cmda && cmdb
B) мог бы повторить первыйfor %i in (*) do @ECHO cmda && cmdb
C) мог бы добавить, я думаю, что это / R, чтобы пройти через подкаталоги.for %i in (*) do move "%~i" "%~ni"
даже это может быть недостаточно хорошо, так как это может иметь побочные эффекты, когда целевая папка не существует (например, файлы «перемещаются» над собой, следовательно, переименовываются). Простым решением было бы объединить обе команды, например так:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
команда предполагает, что каталоги еще не существуют.cmda && cmdb
тоcmdb
будет выполняться только тогда , когдаcmda
был успешным. Если бы вы использовалиcmda & cmdb
вместо этого, то вторая команда будет выполнена независимо. Фактически, один амперсанд (&
) - это просто разделитель команд, а двойной амперсанд (&&
) - условный . Команды, которые не устанавливаютerrorlevel
значение, не должны использоваться с последним.Просто выполните эти команды последовательно:
Для создания папок для каждого файла:
Для перемещения каждого файла в его папку:
источник
Это будет сделано, если у вас есть несколько папок, например: example years \ Filename.mp4
в нем будут перечислены все файлы папок 1-го уровня; перечисляет все * .mp4 и * .mkv, создает папки 2-го уровня с именем файла и перемещает все файлы с одинаковыми именами в папке 1-го уровня в папку 2-го уровня, запускает его в базовой папке лет.
Если у вас нет папки ГОДА 1-го уровня, вы можете просто пропустить первую и запустить второй шаг, запустив ее в базовой папке имени файла.
&& гарантирует, что предыдущий mkdir% ERRORLEVEL% равен 0 для запуска перемещения файлов
Чтобы проверить, используйте это:
источник