5

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

我需要这个来从命令行配置 BizTalk,例如:

BTSTask.exe AddResource -ApplicationName:App1 -Type:System.BizTalk:BizTalkAssembly -Overwrite -Source:..\Schemas\bin\development\App1.Schemas.dll -Destination:%BTAD_InstallDir%\App1.Schemas.dll

此命令将资源添加到 BizTalk 应用程序。我希望目标是 %BTAD_InstallDir%\App1.Schemas.dll,但目前它正在评估环境变量(没有)并使用 \App1.Schemas.dll。

在解析\执行此命令时是否可以转义或禁用此环境变量的评估?

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

[编辑]当我在命令提示符下执行它时,它不会替换环境变量,但是当我将它作为脚本运行时它会替换,关于为什么这不同的任何想法?

4

5 回答 5

4

在它打印的命令提示符中尝试 echo ^%path^% ...

小路

而不是扩展环境变量,所以我想按照 Mikeage 的建议,以下内容应该对你有用

BTSTask.exe AddResource -ApplicationName:App1 -Type:System.BizTalk:BizTalkAssembly -Overwrite -Source:..\Schemas\bin\development\App1.Schemas.dll -Destination:^%BTAD_InstallDir^%\App1.Schemas.dll

于 2008-11-27T10:54:13.197 回答
3

你试过了吗:

%%BTAD_InstallDir%%

在你的脚本中?

这应该会阻止脚本解释变量,并将其传递%BTAD_InstallDir%给程序。

于 2008-11-27T11:28:41.783 回答
2

尝试 ^% 而不是 %。

于 2008-11-27T10:36:06.587 回答
1

试过:

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

拿到:

%JAVA_HOME%

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

[编辑 2] 作为记录:我使用 UnxUtils 的 echo 来获得普通程序的行为。内置 echo 的行为略有不同,至少对于引用的 % 符号。

于 2008-11-27T10:54:37.907 回答
0

不确定它是否与我的情况相同,但我很难使用批处理文件来创建一个内部包含 %temp% 变量的脚本。我找到的解决方法: set test=%temp; echo {command} %test%%>>path_to_my_batch_file; 希望这对某人有帮助:)

于 2020-03-03T10:29:28.280 回答