我正在创建一些常用的doskey命令,我经常使用这些命令。我正在尝试在doskey宏中有多个变量,有时一个变量中会有空格。我试着引用变量的值,但不起作用。唯一有效的方法就是在宏字符串的末尾添加更多的变量。
我想做的是: doskey keycmd=plink -l user -pw -batch $1 -batch $2然后执行它,如下所示: c:> keycmd hostname "dir /p /users“
doskey在执行时看到的是:$1=hostname、$2="dir“和"dir”不是命令,/p和/users被完全删除。
为了让它工作,我必须这样定义它: doskey keycmd=plink -l user -pw password $1 -batch $2 $3 $4并执行如下命令: c:> keycmd hostname dir /p /users
有没有办法将"dir /p /users“分组到一个$2变量中?对于doskey变量参数,你只能得到9,$1..$9。最终我可能会在复杂的命令上耗尽。我尝试了单引号和双引号,但在Windows cmd命令中,avail...but的单引号和/或双引号似乎在其他地方都不起作用。
有没有解决这个问题的办法,或者我只是想用doskey做太多的事情?
发布于 2013-09-30 02:47:45
这个应该可以了。告诉最后一个var就是其他所有东西
keycmd=echo plink -l user -pw password $1 -batch $*发布于 2014-10-06 15:16:19
虽然在最后一个参数中可能有空格(在wild2010的answer中使用$* ),但通常不可能在命令中包含带有空格的参数。
请参阅Using Doskey
遗憾的是,尽管参数可以是长文件名,但它不能包含空格,即使用反逗号括起来也是如此。
如果文件名包含空格,则需要**。我知道没有解决这个问题的办法**。
DosKey宏也可以使用被称为“全局可替换参数”的$*。
这必须是宏的最后一部分,并替换为命令行上不是宏名称或指定给编号参数的任何内容。
如果将上面的示例重写为:
DOSKEY D2F=DIR $1 $g $*然后,可以使用带有空格的长文件名作为最后一个参数-但是用作$1替代的路径名仍然不能包含带有空格的目录名。
https://stackoverflow.com/questions/14667922
复制相似问题