2016-04-04 5 views
0

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

Это неверная командапакет - перемещение папок неправильно по первой букве папки

setlocal enabledelayedexpansion 
for /d %%i in (*) do (
    set first=%%i 
    move "%%i" "!first:~0,1!" 
) 

ответ

0

Move документация говорит:

Если вы двигаетесь только один файл, вы можете также включить имя файла, если вы хотите, чтобы переименовать файл, когда вы подвинь это.

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

move "%%i" "!first:~0,1!"\"%%i" 

Я думаю, что это не получится, потому что каталог a не существует, то, так что вы должны сначала создать его. Полный скрипт должен стать чем-то вроде этого. Непроверенный, но он должен хотя бы дать вам понять, что в настоящее время не так, и вы можете исправить его оттуда.

setlocal enabledelayedexpansion 
for /d %%i in (*) do (
    set first=%%I 
    if not exist "!first:~0,1!"\nul md "!first:~0,1!" 
    move "%%i" "!first:~0,1!"\"%%i" 
) 
+0

Да, вы правы, оно перемещается только в том случае, если я сначала создаю папки. Но я хочу автоматически создавать папки букв A, B, C, потому что у меня не могло быть буквы в моей коллекции. Я пробую вашу команду, но она перемещает папки внутри папки с именем ***% *** и просто не перемещает их переупорядочение по первой букве папки, как я прошу. –