在 Windows cmd.exe 中使用 FOR 分配别名

在 Windows cmd.exe 中使用 FOR 分配别名

我一直尝试使用循环来创建多个别名,但没有成功。我不是专业人士,请耐心等待...有人知道我的代码有什么问题吗?或者我如何在命令提示符中实现这一点?我知道如何在 PowerShell 中执行此操作,但我正在尝试为 cmd 重现代码。这是代码:

@ECHO OFF

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

以下是运行宏时得到的结果:

答案1

您正在定义DOSKEY %%GG=cd %%GG:\(使用双 G),它扩展为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:
)

相关内容