Cmd 从doskey宏中删除引号(导出=设置)

Cmd 从doskey宏中删除引号(导出=设置),cmd,doskey,Cmd,Doskey,我正在尝试删除doskey宏的传入引号,该宏将允许我使用“导出”作为“设置”。以下是我所拥有的: doskey export=set $* 除非我使用以下工具运行: export VAR="value" 我的结局是: VAR="value" vs我想要的: VAR=value 我想我必须编写一个小的排序方法来“清理”要设置的输入,但我不知道怎么做——类似于“for(var1=var2)do set var1=~var2”,但我无法让这样的方法工作 救命啊 您也可以使用for循环来完成,但

我正在尝试删除doskey宏的传入引号,该宏将允许我使用“导出”作为“设置”。以下是我所拥有的:

doskey export=set $*
除非我使用以下工具运行:

export VAR="value"
我的结局是:

VAR="value"
vs我想要的:

VAR=value
我想我必须编写一个小的排序方法来“清理”要设置的输入,但我不知道怎么做——类似于“for(var1=var2)do set var1=~var2”,但我无法让这样的方法工作


救命啊

您也可以使用for循环来完成,但这更简单:

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

  • 保存原始的
    %*
    ,因为我们要销毁它
  • 准备一个变量(
    ARGCOPY
    ),将转换后的参数放入
  • 标签(第6行goto的目标)
  • 将第一个参数
    %1
    附加到
    ARGCOPY
    ,但删除引号(
    %1
  • shift
    将所有参数左移一个空格(即原来的
    %2
    变为
    %1
    ,等等)
  • 如果我们已经到达参数的末尾,则
    %1
    没有值,否则
    转到
    第3行,即
    :copyargs
    标签所在的位置
    完成后,
    %ARGCOPY%
    将包含不带引号的参数。

    您也可以使用for循环来完成,但这更简单:

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

  • 保存原始的
    %*
    ,因为我们要销毁它
  • 准备一个变量(
    ARGCOPY
    ),将转换后的参数放入
  • 标签(第6行goto的目标)
  • 将第一个参数
    %1
    附加到
    ARGCOPY
    ,但删除引号(
    %1
  • shift
    将所有参数左移一个空格(即原来的
    %2
    变为
    %1
    ,等等)
  • 如果我们已经到达参数的末尾,则
    %1
    没有值,否则
    转到
    第3行,即
    :copyargs
    标签所在的位置
    完成后,
    %ARGCOPY%
    将包含不带引号的参数。

    没有
    导出
    命令。您以什么方式使用导出?如果要设置环境变量的值,请使用`set“VAR=value”doskey.exe创建控制台别名。默认情况下,只要“cmd.exe”从控制台执行熟读操作(即在控制台输入句柄上调用
    ReadConsole
    ReadFile
    ),它就会创建有效的别名。还可以专门为其他可执行文件(如python.exe)创建别名。控制台别名通过替换行首匹配的文本来工作。它不能在从控制台读取的输入命令中的任何其他地方使用。它也不能在批处理脚本中使用。因此它的价值非常有限。控制台允许将空白分隔的命令行的其余部分参数化为
    $1
    $9
    ,以及别名本身之后整个命令行的
    $*
    。您可以在替换字符串中使用
    $*
    ,例如在
    for
    循环中或其他任何内容中。但是请记住,CMD将从控制台读取
    for
    循环,因此它必须是交互式命令行的有效语法。它不像函数或调用
    export.bat
    脚本那样进行计算。在执行
    export
    语句之前,需要过滤掉这些引号(以避免eryksun准确指出的复杂情况)。没有
    export
    命令。您以什么方式使用导出?如果要设置环境变量的值,请使用`set“VAR=value”doskey.exe创建控制台别名。默认情况下,只要“cmd.exe”从控制台执行熟读操作(即在控制台输入句柄上调用
    ReadConsole
    ReadFile
    ),它就会创建有效的别名。还可以专门为其他可执行文件(如python.exe)创建别名。控制台别名通过替换行首匹配的文本来工作。它不能在从控制台读取的输入命令中的任何其他地方使用。它也不能在批处理脚本中使用。因此它的价值非常有限。控制台允许将空白分隔的命令行的其余部分参数化为
    $1
    $9
    ,以及别名本身之后整个命令行的
    $*
    。您可以在替换字符串中使用
    $*
    ,例如在
    for
    循环中或其他任何内容中。但是请记住,CMD将从控制台读取
    for
    循环,因此它必须是交互式命令行的有效语法。它不像是一个函数或调用一个
    export.bat
    脚本那样被评估。在执行
    export
    语句之前,您需要过滤掉这些引号(以避免eryksun准确指出的复杂情况)。哇,谢谢,我很感谢您对其工作原理的解释。现在,如何将其插入doskey宏中?
    export%ARGCOPY%
    如果
    export
    是您的doskey宏,请记住对所有有用的答案进行投票,并选择最能回答您问题的答案。这将有助于未来的访问者,并给我一些建议:-)哇,谢谢,我很感谢你对这一点的解释。现在,如何将其插入doskey宏中?
    export%ARGCOPY%
    如果
    export
    是您的doskey宏,请记住对所有有用的答案进行投票,并选择最能回答您问题的答案。这将有助于未来的访客,并给我打分:-)