2017-08-04 74 views
1

我试图删除一个doskey宏的引用引号,它可以让我使用“export”作为“set”。下面是我有:从doskey宏(export = set)中删除引号

doskey export=set $* 

除了当我用下面的运行:

export VAR="value" 

我结束了:

VAR="value" 

VS我想要的东西:

VAR=value 

我想我必须写一点点'c'的方法精益“的输入设置,但我不知道该怎么做 - 就像”for(var1 = var2)set var1 =〜var2“,但我不能得到任何这样的工作。

帮助!

+0

没有'export'命令。你用什么方式使用'export'?如果要设置环境变量的值,请使用'SET'VAR =值“ – lit

+0

doskey.exe创建控制台别名。默认情况下,只要“cmd.exe”从控制台执行熟读操作(即在控制台输入句柄上调用“ReadConsole”或“ReadFile”),就会生成别名。别名还可以专门为其他可执行文件(如python.exe)创建。控制台别名的工作方式是替换在行首匹配的文本。它不能在从控制台读取的输入命令中的任何其他地方使用。它也不能在批处理脚本中使用。所以它的价值非常有限。 – eryksun

+0

控制台允许以空格分隔的命令行的其余部分参数化为'$ 1',最高为'$ 9',以及对于整个命令行的'$ *'参数化后的别名本身。您可以在替换字符串中使用'$ *',例如在一个'for'循环或其他。但请记住,CMD将从控制台逐字读取“for”循环,因此它必须是交互式命令行的有效语法。它并不像它被评估为一个函数或调用'export.bat'脚本。 – eryksun

回答

0

你或许可以用做对循环太多,但这种情况很容易:

set ORIGARGS=%* 
set ARGCOPY= 
:copyargs 
    set "ARGCOPY=%ARGCOPY% %~1" 
    shift 
    if not [%1]==[] goto:copyargs 

即。 (逐行)

  1. 保存原来的%*因为我们要摧毁它。
  2. 准备一个变量(ARGCOPY),以把转换参数到
  3. 标签(在第6行的goto的目标)
  4. 的第一个参数追加%1ARGCOPY,但除去引号(%~1
  5. shift所有参数(即什么是%2变为%1等)
  6. 如果我们已经达到参数的末尾,那么%1没有值,否则goto第3行,其中:copyargs标签为lo cated。

当您完成%ARGCOPY%将包含不带引号的参数。

+0

哇,谢谢,我很欣赏如何工作的解释。现在,我如何将它插入doskey宏? – Paul

+0

'export%ARGCOPY%'如果'export'是你的doskey宏。 – thebjorn

+0

请记住点赞所有有帮助的答案,然后选择最符合您问题的答案。这将有助于未来的游客,并给我点:-) – thebjorn