1

Я немного похож на командный файл, так что я очень признателен за вашу помощь. У меня есть тонна файлов, хранящихся в одном каталоге, которые я хочу отсортировать по подпапкам на основе первого слова в их именах файлов. Итак, у меня есть такие файлы:

C:\Folder\Wedding2018 img20929.jpg 
C:\Folder\Wedding2018 entrance.mov
C:\Folder\Wedding2018 registry of guests.pdf

C:\Folder\HorseRiding2017 spirit1.jpg
C:\Folder\HorseRiding2017 guests.txt 
C:\Folder\HorseRiding2017 certificate.pdf
C:\Folder\HorseRiding2017 jumping.mov

И я хочу переместить все файлы в подпапки, основываясь на первом слове, заканчиваясь так:

C:\Folder\Wedding2018\img20929.jpg
C:\Folder\Wedding2018\entrance.mov
C:\Folder\Wedding2018\registry of guests.pdf

C:\Folder\HorseRiding2017\spirit1.jpg
C:\Folder\HorseRiding2017\guests.txt
C:\Folder\HorseRiding2017\certificate.pdf
C:\Folder\HorseRiding2017\jumping.mov

Я нашел пару сценариев, которые почти делают то, что мне нужно, но у меня нет выбора, чтобы привести его домой:

«Нужен скрипт для создания папок на основе имен файлов и автоматического перемещения файлов»

"Как извлечь второе слово строки через пакет Windows"

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

Можете ли вы помочь мне получить это через линию?

2 ответа2

1
  • Используйте один для, чтобы перебрать содержимое папки %%A с шаблоном, содержащим хотя бы один пробел.
  • Еще один for /f необходим, чтобы разделить имя %%A на две части, одну перед первым пробелом tokens=1 = %%B а остальные tokens * = %%C
  • Если папка с именем %%B не существует, создайте ее
  • Переместите исходный файл %%A в подпапку %%B с именем %%C

:: Q:\2018\06\11\SU_1330475.cmd
@Echo off
PushD C:\folder
for %%A in ("* *.*") do for /f "tokens=1*" %%B in ("%%A") do (
     If not exist "%%B" MD "%%B"
     Move "%%A" "%%B\%%C"
)
PopD

> tree /f
C:.
│   SU_1330475.cmd
│
└───folder
    ├───HorseRiding2017
    │       certificate.pdf
    │       guests.txt
    │       jumping.mov
    │       spirit1.jpg
    │
    └───Wedding2018
            entrance.mov
            img20929.jpg
            registry of guests.pdf
-1

Это должен быть командный файл?

Я бы открыл основную папку, в которой находятся все файлы и подпапки, затем перейдите в поле поиска в этом окне и введите, например, wedding *. Вы выбираете все файлы, нажимая CTRL + A, затем нажимаете CTRL + X, чтобы вырезать.

Вы создаете новую папку с именем Wedding2018 и нажимаете CTRL + V (вставка). Таким образом, вы делаете для каждой папки, которую вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .