Windows 批处理文件:如何从自身附加到 *.bat 或 *.cmd 文件?

Windows Batch Files: How can I append to a *.bat or *.cmd file from within itself?

我正在尝试对 this SO answer 中@Argyll 提供的代码进行轻微修改,特别是更改:

DOSKEY alias=notepad %USERPROFILE%\Dropbox\alias.cmd

至:

doskey alias=echo doskey $*>>%0

但是当我使用这个新别名时重定向失败,我只是像往常一样将 doskey <whatever I typed after alias> 回显到控制台:-(

如您所知,我是一个批处理脚本菜鸟,所以我做错了什么?国际机场 :-)

您需要逃避重定向,否则在您调用 doskey alias=echo doskey $*>>%0 时重定向处于活动状态,它将 doskey 命令的输出(在这种情况下始终为空)附加到当前批处理文件。

但是如果你将你的行修改为

doskey alias=echo doskey $*^>^> "%~f0"

这将创建一个名为 alias 的宏,如

alias=echo doskey $* >> C:\myfull\path\to\myBatch.bat

我使用 %~f0 作为完整路径,否则宏可以定义为

alias=echo doskey $* >> myBatch.bat

如果你不在正确的目录中,那显然会失败