【问题标题】:Simple SET not working in batch file简单的 SET 在批处理文件中不起作用
【发布时间】:2016-03-29 06:29:20
【问题描述】:

免责声明:我不是批处理文件专家,只是在 Google 和 SO 的帮助下挖掘自己的方式。另请注意,我正在尝试将此批处理文件作为 SourceTree 中的自定义操作运行。

以下简单的 SET 命令似乎没有为变量赋值:

SET MYVAR = %1
ECHO "%MYVAR%"
ECHO "!MYVAR!"
ECHO %1 

上面的第一个 ECHO 返回"";第二个"!MYVAR!",而最后一个返回命令行参数的实际值。如何为 MVAR 赋值?

【问题讨论】:

    标签: variables batch-file atlassian-sourcetree


    【解决方案1】:

    set= 两侧的空格敏感。您正在设置一个名为myvar[Space}的变量

    【讨论】:

    • 不敢相信这是正确的。这是我所知道的第一种这样工作的语言(尽管我只知道其中的一小部分)。万分感谢。 :)
    • @dotNET:大多数 UNIX shell(包括 Bash)都是相同的。它与驻留在每个进程VAR=VALUE 中的环境块一致。该格式来自 C setenvgetenv 等。
    • 它是一种脚本,而不是一种计算机语言,这是主要区别之一。没有预编译器可以去除不必要的空格。你见过 Python 对空格的挑剔吗?这是因为它也不是一种编译语言。批处理文件实际上是一次运行一行;您可以添加一个“暂停”,当它暂停时,在该行下添加一个新命令(并保存脚本文件),当您从“暂停”恢复时,它将运行该新添加的命令。任何set /p 输入提示都允许您接管程序。但 Bash 不会,因为它不像 .bat 文件那样开玩笑。
    • @LinuxDisciple:不确定我是否同意编译/解释的论点。 PHP 和 GW-BASIC 都被解释,但允许不必要的空格。不过,您对 Python 的看法可能是正确的,但我没有使用过。
    • @dotNET 两年后再次阅读,我也对我之前的笔记感到不安。 Python 是一个相当独特的例子,因为空格 作为缩进 是其语法的基本部分;它对空格的处理与其解释的性质无关。 Batch 对空白有这些特定的敏感性,因为它的解释器是简单的。如果我可以编辑注释,我会删除前四个句子(那些不涉及可测试细节的句子)。我支持其余的。
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多