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"
)
Да, вы правы, оно перемещается только в том случае, если я сначала создаю папки. Но я хочу автоматически создавать папки букв A, B, C, потому что у меня не могло быть буквы в моей коллекции. Я пробую вашу команду, но она перемещает папки внутри папки с именем ***% *** и просто не перемещает их переупорядочение по первой букве папки, как я прошу. –