Вы определения 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:
)