Вы определения DOSKEY %%GG=cd %%GG:\ (с двойным Гс) , который расширяется до DOSKEY aG=cd aG:\ DOSKEY bG=cd bG:\ ... так что вы должны ввести aG для того , чтобы изменения в диск aG: (который не является действительной буквой диска). То же самое для других дисков
Если вы бежите for /? вы увидите, что переменные в цикле for имеют только одну букву, так же, как параметры командной строки состоят из одной цифры
FOR %variable IN (set) DO command [command-parameters]
%variable Specifies a single letter replaceable parameter.
Кроме того, чтобы изменить текущий диск, вы используете только букву диска вместо cd . Это означает, чтобы перейти в текущий каталог на A: просто запустите A: CD A: не будет работать (как и ожидалось). Однако, если вы хотите принудительно изменить текущий диск и текущий каталог, используйте параметр /D
Вот исправленная версия
@ECHO OFF
FOR %%G IN (a,b,c,d,e,f,g,h) DO (
DOSKEY %%G=%%G:
rem Or DOSKEY %%G=cd /D %%G:
)