cmd 快捷方式中的 Doskey 别名命令不起作用

cmd 快捷方式中的 Doskey 别名命令不起作用

打开 cmd 提示符并手动发出我的自定义 doskey 宏命令可以正常工作,但我认为通过创建自动调用这些命令的 cmd 快捷方式可以节省时间。

因此,我创建了 2 个 cmd 快捷方式,可从目标字段自动运行这些 doskey 宏:

%windir%\system32\cmd.exe /k m7

%windir%\system32\cmd.exe /k m50

运行快捷方式显示以下错误消息:

'm5' is not recognized as an internal or external command

'm50' is not recognized as an internal or external command

命令提示符上方显示错误消息的图像

但是,常规 cmd 命令在目标字段中指定时才有效:

%windir%\system32\cmd.exe /k dir

我必须做什么才能使其与 doskey 别名命令一起工作?顺便说一句,我确保每个快捷方式都以管理员身份运行。并且我的所有 doskey 宏都已加载到注册表中,以便在 cmd 会话之间保持内存持久性。谢谢。

doskey cmd 文件:

alsias.cmd:

@echo off

doskey m7=C:\Bin\m7connect.cmd
doskey m50=C:\Bin\m50connect.cmd

m7connect.cmd:

@echo off

adb disconnect
adb connect 192.168.1.7
timeout /t 1 /nobreak
scrcpy

m50连接.cmd:

@echo off

adb disconnect
adb connect 192.168.1.8
timeout /t 1 /nobreak
scrcpy

答案1

你不能打电话给DOSKEY宏以这样的方式。

为了证明,请将您的快捷方式目标更改为例如

%windir%\system32\cmd.exe /k "doskey /macros & m50"

我猜想所有宏都已列出,但错误发生了。但是,您可以在打开的提示窗口'm50' is not recognized …中手动成功调用宏( )吗?cmdm50Enter

CMD.EXE以及(没有选择DOSKEY宏作为Command):

Syntax
    CMD [charset] [options]
    CMD [charset] [options] [/C Command] 
    CMD [charset] [options] [/K Command] 

Options   
    /C     Run Command and then terminate
    /K     Run Command and then return to the CMD prompt.
           This is useful for testing, to examine variables

           Command : The command, program or batch script to be run.

解决方案:在快捷方式目标中使用操作cmds 代替其 DOSKEY 宏名称:

%windir%\system32\cmd.exe /k "C:\Bin\m7connect.cmd"

%windir%\system32\cmd.exe /k "C:\Bin\m50connect.cmd"

分别而不是%windir%\system32\cmd.exe /k m7%windir%\system32\cmd.exe /k m50

答案2

为什么不直接使用.bat 文件来代替宏呢?

例如,每次调用终端或命令提示符时,命令提示符启动目录中的 autoexec.bat 文件都会自动执行您的 doskey。

C:\Users\[用户名]>notepad autoexec.bat

在 notepad.exe 中执行以下几行

REM Turn on DOSKEY (Comment)
@ECHO OFF (@ suppresses display of dos commands including echo off command)
DOSKEY (invoke doskey)

关闭终端并重新启动。每次在默认启动目录中启动终端时,这将运行 autoexec.bat 文件。

其他批处理命令也可以作为 .bat 文件保存在您选择的目录中

例如:

C:\Users\[用户名]>notepad connect.bat

@echo off
adb disconnect
adb connect 192.168.1.7
timeout /t 1 /nobreak
scrcpy

要调用此批处理文件类型 C:Users\[用户名]\someDirectory>C:Users\[用户名]\connect.bat

或者直接添加C:Users\[用户名]到 asutoexec.bat 文件中的路径

为什么要用宏来让事情变得复杂?以前人们避免使用 autoexec.bat 来节省内存并保持速度。当内存只有 640kb 时,这一点很重要。在拥有 GB 可用内存的现代系统中,内存并不是一个真正的问题。

相关内容