2016-04-04 4 views
0

У меня есть это содержимое внутри каталогаBatch команду для перемещения много папок внутри alfabetic структуры каталогов

[FOLDERS] 
Atomic 
Animal 
Cat 
flash 
Zoe 

[FILES] 
text.txt 
audio.rar 

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

A [Atomic, Animal] 
C [cat] 
f [flash] 
Z [zoe] 
file1.rar 
file2.txt 

где A, C, f, Z - родительские папки. Папки в скобках - это папки MOVED, а не папки CONSOLIDATED!

Какой .bat команду можно использовать?

Я хочу двигаться в уникальной папке для всех папок, которые начинаются с письма. Для папок, которые начинаются с F буквы Я хочу переместить их в одну папку под названием F
Moving не заменяет или слияния, потому что я предполагаю, что все папки, которые начинаются с той же буквы имеют разные имена, я хочу просто заказ их по буквам первой папки.
Я не хочу консолидировать папки в уникальных папках по буквам, но только moving в уникальной папке по первой букве папки.

WHAT I WANT

+0

Просто для подтверждения. Вы хотите изменить имя папки с 'Afolder1' на' A' и так далее? –

+0

Как насчет 'Afolder1' и' Afolder2'? Переписать? Объединить их содержимое? Что делать, если в двух (или более) папках есть дубликаты имен файлов? – Stephan

+0

@ Эрик S нет, я не хочу переименовывать, но просто перемещать или копировать папки в алфавитном порядке папок по первой букве папки. X Stephan no, я не хочу слияния, и я не перезаписываю папки, но перемещаюсь только в уникальной папке с именем * A * для всех папок, начинающихся с буквы *** A ***. Для папок, начинающихся с буквы * F *, я хочу переместить их в одну папку с именем *** F *** –

ответ

0
@echo off 
setlocal enabledelayedexpansion 
rem md atomic animal cat flash zoe alfa american banda barca beta brasil cane alfa\subdir 
tree 
for /d %%i in (*) do (
    set first=%%i 
    set first=!first:~0,1! 
    md !first! 2>nul 
    if not "!first!" == "%%i" move "%%i" "!first!\%%i" 
) 
tree 

для каждой директории в текущей папке сделать:
- получить первую букву
- создать одну букву папку
- если папка не папка по одной букве, переместить его.

tree показать результат

+0

Некоторая инструкция неверна, потому что копирует только одну папку внутри алфавитной структуры, смотрите здесь: [ЗАПИСЬ] (http: // peterlongx.altervista.org/Flash/Richieste/reorder_folder_by_first_letter.htm) –

+0

извините, перед перемещением должна существовать «папка с одной буквой». См. Мой отредактированный код. – Stephan

+0

спасибо за исправление, но есть ли способ автоматического создания этого списка? В какой-то ситуации у меня может быть 100-200 каталогов с папками внутри, поэтому я не могу писать имена всех папок внутри всех папок внутри, было бы неприятно .. –