Пакетный файл Windows для перемещения файлов в подпапки на основе первого слова в имени файла?

1061
juzzle

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

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»

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

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

1

2 ответа на вопрос

1
LotPings
  • Используйте один для, чтобы перебрать содержимое папки %%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 
это работало как абсолютный шарм - спасибо. При тестировании с большим объемом файлов единственным замечанием, которое я заметил, было то, что для файлов с двойным пробелом после первого слова он вообще не мог их обработать - легко исправить juzzle 5 лет назад 0
Если вы найдете мой ответ полезным, рассмотрите пометку чака как ответ и / или [проголосуйте] (https://superuser.com/help/why-vote) LotPings 5 лет назад 0
-1
Ricardo Bohner

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

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

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