Я пытаюсь написать команду, которая может объединить все папки в каталоге с похожими именами. Теперь все эти папки имеют уникальное имя, поэтому я думаю, что вы можете основать концепцию "похожего имени" на первых 5 символах папок.

папка будет выглядеть

longyellowbus-092092301
longyellowbus-92382012
5fatmimn-324535232
hintout-239119393
hintout-2391038949
hintout-2983419101
dogscats-293457893
2dummerboy-9293982
2dummerboy-29848292

и я хотел бы объединить все папки с одинаковыми именами в одну папку, и некоторые из содержимого внутри будут одинаковыми, так что это нормально для перезаписи. Так что в основном конечный результат будет выглядеть так.

longyellowbus-092092301
5fatmimn-324535232
hintout-239119393
dogscats-293457893
2dummerboy-9293982

Числа заканчиваются после тире - на самом деле не имеет значения, я попытаюсь удалить их после слияния, так что все, что осталось, это только чистые имена папок.

longyellowbus
5fatmimn
hintout
dogscats
2dummerboy

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

1 ответ1

0

Следующая партия анализирует выходные данные dir, разделяя имена dir по разделителю -, %% A - первый токен, а %% B - остаток. Если dir, подобный первому токену, не существует, он переименовывается, если это делает, содержимое длинного имени dir принудительно перемещается, а затем dir удаляется.
Отредактируйте путь в соответствии с вашей средой.

@Echo off
pushd "C:\path\to\your\base\folder"
for /f "Tokens=1* Delims=-" %%A in (
  'Dir /B /AD *-*'
) Do If Not Exist "%%A" (
  Ren "%%A-%%B" "%%A"
) Else (
  Move /Y "%%A-%%B\*" "%%A\"
  RmDir "%%A-%%B"
)
PopD

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