代码之家  ›  专栏  ›  技术社区  ›  marcj

Windows命令行:环境变量的非评估

  •  5
  • marcj  · 技术社区  · 16 年前

    我希望将引用环境变量的原始文本提供给命令,而不是评估环境变量。

    我需要这样做才能从命令行配置Biztalk,例如:

    btstak.exe addresource-应用程序名:app1 -类型:System.Biztalk:BiztalkAssembly-覆盖 -源:..\schemas\bin\development\app1.schemas.dll -目标:%btad\u installdir%\app1.schemas.dll

    此命令将资源添加到Biztalk应用程序。我希望目标是%btad_installdir%\app1.schemas.dll,但是目前它正在评估环境变量(不考虑任何内容)并使用\app1.schemas.dll。

    在分析\执行此命令时,是否可以转义或禁用此环境变量的计算?

    我尝试用一个胡萝卜(^)来转义第一个和两个百分比字符,但是这并没有停止评估。

    [编辑] 当我在命令提示下执行这个命令时,它不会替换环境变量,但是当我以脚本的形式运行它时,它会替换环境变量,对于为什么这是不同的有什么想法吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   VonC    16 年前

    你试过了吗?

    %%BTAD_InstallDir%%
    

    在你的剧本里?

    这将阻止脚本解释变量,并且它将 %BTAD_InstallDir% 对程序。

        2
  •  4
  •   Sandeep Datta    16 年前

    在命令提示中尝试echo ^%path ^%,它将打印…

    路径

    而不是扩展环境变量,因此我想下面应该适用于您,正如Mikeage建议的那样

    btstak.exe addresource-applicationname:app1-type:system.biztalk:biztalkassembly-overwrite-source:..\schemas\bin\development\app1.schemas.dll-destination:^%btad\u installdir^%\app1.schemas.dll

        3
  •  2
  •   Mikeage    16 年前

    尝试^%而不是%。

        4
  •  1
  •   PhiLho    16 年前

    尝试:

    C:\PrgCmdLine\Unix\echo.exe "%"JAVA_HOME"%"
    

    得到了:

    %JAVA_HOME%
    

    [编辑]确实, C:\PrgCmdLine\Unix\echo.exe ^%JAVA_HOME^% 也可以,而且更简单…

    [编辑2]对于记录:我使用unxutils的echo实现了一个普通程序的行为。内置Echo的行为稍有不同,至少引用了%的符号。