cmd环境变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmd环境变量?相关的知识,希望对你有一定的参考价值。
可以用变量名查找变量值,那可不可以反过来呢?谢谢
反过来,也是可以的。这时候就需要用for+find/findstr配合了。假设已经设置好了一个变量名为abc,变量值为x:\xyz
但我们不知道变量名,但知道变量值的情况下,那么代码如下
for /f "tokens=1 delims==" %%a in ('set ^| findstr /c:"x:\xyz"') do echo x:\xyz 的变量名为 %%~a来自:求助得到的回答 参考技术A 反过来?那没啥意义。
变量之间,一定不会重复,可是值说不定就有重复的。
所以…… 参考技术B 以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem 根据变量值查找对应的变量名
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set a=1
set b=1
set c=2
for /f "tokens=1* delims==" %%a in ('set') do (
if "%%b" equ "1" echo;%%a
)
echo;%#% +%$%%$%/%@% %z%
pause
exit 参考技术C win7
桌面"我的电脑"右键"属性",出来的框左边选"高级系统设置",弹出小框选"高级"
,在下面有"环境变量",点击"环境变量"
在 CMD 中使用环境变量
【中文标题】在 CMD 中使用环境变量【英文标题】:Use environment variables in CMD 【发布时间】:2014-05-29 01:39:59 【问题描述】:我可以在 Dockerfile 的 CMD 节中使用环境变量吗?
我想做这样的事情:
CMD ["myserver", "--arg=$ARG", "--memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT"]
$MEMCACHE_11211_TCP_* 将通过包含我的docker run
命令的 --link 参数自动设置。并且 $ARG 可以由用户在运行时配置,也许可以通过“-e”参数?
这似乎对我不起作用,例如,它似乎实际上是通过字符串“$ARG”。
【问题讨论】:
【参考方案1】:这个答案可能有点晚了。但是 CMD
的环境会根据您编写参数的方式略有不同。如果您将CMD
作为字符串(不在数组内)传递,它将作为shell 而不是exec 启动。见https://docs.docker.com/engine/reference/builder/#cmd。
您可以尝试不使用数组语法的 CMD
作为 shell 运行:
CMD myserver --arg=$ARG --memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT
【讨论】:
如果您使用CMD string
方法,当您使用docker run my-image
时Ctrl-C
可能会停止工作,因为shell 获取中断而不是由CMD
启动的进程。 【参考方案2】:
CMD ["sh", "-c", "echo $MY_HOME"]
来自 sffits 的回答 here。
【讨论】:
【参考方案3】:两个安迪都说对了。 json 语法绕过入口点。当您在他们的示例中使用 CMD 时,它被视为默认入口点的参数:/bin/sh -c
,它将解释环境变量。
在这两种情况下,Docker 都不评估 CMD 中的变量。前者直接调用命令,不解释,后者由sh
解释变量。
【讨论】:
【参考方案4】:我无法说明它是如何工作的,应该,但我认为如果你将其称为 shell 脚本,例如CMD runmyserver.sh
,那么 shell 变量的解释将推迟到 CMD 实际运行。
所以,试试
myserver --arg=$ARG --memcache=$MEMCACHE_11211_TCP_ADDR:$MEMCACHE_11211_TCP_PORT``
作为 shell 脚本?
【讨论】:
以上是关于cmd环境变量?的主要内容,如果未能解决你的问题,请参考以下文章