Windows 的 doskey/别名中的空间?

Tho*_*mas 5 windows alias bash-alias cmd.exe

我尝试通过定义 doskey 别名在(docker)容器内运行Laravel 的 Artisan命令。

我的想法是:

php artisan=docker-compose exec apache php artisan $1
Run Code Online (Sandbox Code Playgroud)

但是,它不允许我在密钥中使用空格。知道如何实现这一目标吗?

 显示“无效的宏定义”错误的图像

编辑我为 Windows 制作了一个小的 GUI 工具来运行命令https://github.com/thomasmoors/DockerArtisan

har*_*ymc 7

在这种情况下,我必须给出否定的答案 - 在 doskey 名称中使用空格是不可能的。Doskey 是为命令提示符 (cmd) 创建的,因此在概念上相当简单。

我认为这是不可能的,因为:

  • 在诸如 之类的 doskey 命令中doskey a b=ab,无效选项需要“a”
  • doskey 命令不接受围绕宏名称的引号。

以下是我运行的一些测试:

图片

如您所见,可以接受一些特殊字符,但不能接受空格。

即使宏名称中没有空格,doskey 也是一个旧的 DOS 程序,只能在 PowerShell 中困难地工作。它与PSReadLine依赖本机控制台输入功能的模块冲突。我测试了这个:

图像2

如您所见,您需要执行两个额外的操作:

  • 发出命令 Remove-Module PSReadLine
  • 在 doskey 命令中添加参数 /exename=powershell.exe

两者都完成后,命令将正确执行并给出正确的错误。

我最好的建议是不要在 PowerShell 中使用 doskey。Doskey 是旧的,PowerShell 是新的,它们只能很难一起使用。我真的不认为 doskey 有用到不可替代。

尝试为您常用的命令找到另一种解决方案。例如,存储在可执行文件,如命令.ps1.cmd.bat文件夹,你会添加到PATH中。