在窗口命令提示符中使用别名参数
来源:http://jpsoft.com/help/index.htm?alias.htm
别名可以使用命令行 参数或类似的参数 批处理文件。命令行 参数编号从 %0 到 %511。 (%0 包含别名。)
<块引用> <块引用>例如,以下别名将 更改目录,执行命令, 并返回原目录:
pushd %1 & 中的别名%2$ &弹出窗口
当我运行上面的命令时,我的命令提示符给出错误,说
%1 * 无法读取别名的值 * “%2”未被识别为内部或外部命令, 可运行的程序或批处理文件。 “popd”不被识别为内部或外部命令, 可运行的程序或批处理文件。
如果您使用双引号,请使用“pushd %1 & dir & popd”中的别名 时,它不会解释 %1
当您执行别名C:\abc\def>alias 转储 CMD.EXE 的所有已定义别名。 在 =pushd %1 &目录& popd
别名 def 不起作用
---------编辑------------ 让我尝试使用简单的 echo 别名
D:\abc\def>alias /?
的一些示例输出用法: ALIAS [-v] [-p 程序名] [-f 文件规范] [ ]
[-v] means verbose output.
[-d] means delete aliases.
[-p programName] specifies which image file name these alias
definitions are for. Default is CMD.EXE
[-f filespec] specifies a file which contains the alises.
C:\Office\dev15>alias out 'echo %1'
%1' * 无法读取别名值 *
C:\Office\dev15>别名反引号 echo %1 反引号
%1` * 无法读取别名的值 *
C:\Office\dev15>alias out "echo %1"
C:\Office \dev15>alias
转储 CMD.EXE 的所有已定义别名。
out =echo %1
C:\Office\dev15>out abc
%1
C:\Office\dev15>alias out echo %1
%1 * 无法读取别名值 *
C:\Office\dev15>out abc
ECHO已开启。
问题是, 单引号和反引号都会产生错误, 而双引号不会将 %1 视为变量参数 也尝试过不带任何引号。 还是不行
Source:http://jpsoft.com/help/index.htm?alias.htm
Aliases can use command line
parameters or parameters like those in
batch files. The command line
parameters are numbered from %0 to
%511. (%0 contains the alias name.)For example, the following alias will
change directories, perform a command,
and return to the original directory:alias in
pushd %1 & %2$ & popd
when i run the above, my command prompt gives error saying
%1 * Unable to read value of alias *
'%2' is not recognized as an internal or external command,
operable program or batch file.
'popd`' is not recognized as an internal or external command,
operable program or batch file.
if you use double quote instead, alias in "pushd %1 & dir & popd"
it doesn't interprets the %1 when you execute the alias
C:\abc\def>alias
Dumping all defined aliases for CMD.EXE.
in =pushd %1 & dir & popd
alias def wont work
---------EDIT------------
let me try some sample output with a simple echo alias
D:\abc\def>alias /?
Usage: ALIAS [-v] [-p programName] [-f filespec] [ ]
[-v] means verbose output.
[-d] means delete aliases.
[-p programName] specifies which image file name these alias
definitions are for. Default is CMD.EXE
[-f filespec] specifies a file which contains the alises.
C:\Office\dev15>alias out 'echo %1'
%1' * Unable to read value of alias *
C:\Office\dev15>alias out backtick echo %1 backtick
%1` * Unable to read value of alias *
C:\Office\dev15>alias out "echo %1"
C:\Office\dev15>alias
Dumping all defined aliases for CMD.EXE.
out =echo %1
C:\Office\dev15>out abc
%1
C:\Office\dev15>alias out echo %1
%1 * Unable to read value of alias *
C:\Office\dev15>out abc
ECHO is on.
Problem is,
both single quote and back tick produces error,
while double quote wont treat %1 as variable parameter
also tried with none of the quotes.
still wouldnot work
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,尝试一下(使用复制和粘贴):
这会将别名“dtxt”设置为以下命令:
特别注意别名定义周围的单引号 (`)。该键位于 ISO(英国)和 ANSI(美国)键盘的左上角键上。
您需要提供两个参数,%1 和 %2< /strong> 执行 dtxt 时 - 目标路径名和 DIR 命令的参数,如下例所示:
简而言之,PUSHD 将当前工作目录名称推送到后进先出堆栈并将目录更改为 c:\temp。
然后,DIR 命令以 %2 作为参数执行 - 在本例中为 >'*.txt'。
最后,POPD通过将其从堆栈中弹出来恢复以前的工作目录。
仅供参考,这相当于以下标准 DOS 命令:
标准 DOS 中的以下命令也可以正常工作:
但显然,“dtxt”更短并且可以节省击键次数!
Okay, try this (use copy and paste):
This sets the alias 'dtxt' to the following commands:
Pay particular attention to the inverted single quotes (`) around the alias definition. This is found on the top-left key on the ISO (UK) and ANSI (US) keyboards.
You will need to supply two parameters, %1 and %2 when executing dtxt - a target pathname, and a parameter for the DIR command as in the following examples:
In a nutshell, PUSHD pushes the current working directory name onto a LIFO stack and changes directory to c:\temp.
The DIR command then executes with %2 as it's parameter - in this case '*.txt'.
Finally, POPD restores the previous working directory by popping it off the stack.
FYI, this is equivalent to the following standard DOS command:
The following command in standard DOS will also work fine:
But obviously, 'dtxt' is shorter and saves keystrokes!