Я пытался использовать цикл для создания нескольких псевдонимов без успеха. Я не профессионал, пожалуйста, потерпите меня ... Кто-нибудь знает, что не так в моем коде или как я могу реализовать это в командной строке? Я знаю, как сделать это в PowerShell, но я пытаюсь воспроизвести код для cmd. Вот код:

@ECHO OFF

FOR %%G IN (a,b,c,d,e,f,g,h) DO (
    DOSKEY %%GG=cd %%GG:\
)

Вот что я получаю в результате запуска макроса:

1 ответ1

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .