使用Windows XP CMD命令行,我可以将变量扩展两次,如下所示:
set AAA=BBB
set BBB=CCC
for /F "usebackq tokens=*" %i in (`echo %%AAA%%`) do echo %i
Run Code Online (Sandbox Code Playgroud)
会回应CCC
.即AAA
已经扩大到字符串BBB
,然后变量BBB
已经扩大到CCC
.
这不适用于批处理脚本(即.cmd文件)内部.更改%%AAA%%
为任何一个%%%AAA%%%
或%%%%AAA%%%%
不起作用.
知道如何从脚本中实现这一点,即将变量AAA扩展到字符串CCC?
晚编辑
发布的答案适用于我的缩减示例,但非曲折的答案对真实案例不起作用.这是一个扩展示例(不起作用),它说明了我实际上要做的事情:
setlocal enabledelayedexpansion
set LIST=BBB CCC DDD
set BBB=111
set CCC=222
set DDD=333
for %%i in (%LIST%) do (
for /F %%a in ('echo %%%i%') do echo !%%a!
)
Run Code Online (Sandbox Code Playgroud)
我想看看
111
222
333
Run Code Online (Sandbox Code Playgroud)
输出.
我在sproc中返回记录时遇到问题.没有抛出错误,但我认为来自一个服务器环境的数据在另一个服务器环境中混合不好.
set @shipedon = YEAR(@shipdate) * 10000 + MONTH(@shipdate) * 100 + DAY(@shipdate)
Run Code Online (Sandbox Code Playgroud)
这有效:
SELECT [ITEM_KEY],
max([REVISION]) Rev
FROM SERVER2.[BOMSystem].[dbo].[ITEM]
WHERE ITEM_KEY collate DATABASE_DEFAULT in
('391000180', '391000189', '391000191', '391000201',
'391000214', '391000215', '391000216', '391000226')
AND DATE_EFF_FROM <= @shipedon
GROUP BY ITEM_KEY
Run Code Online (Sandbox Code Playgroud)
显示8行,如:
391000180 0001
391000189 0001
391000191 0001
Run Code Online (Sandbox Code Playgroud)
这失败了:
SELECT [ITEM_KEY],
max([REVISION]) Rev
INTO #rev
FROM SERVER2.[BOMSystem].[dbo].[ITEM]
WHERE ITEM_KEY collate DATABASE_DEFAULT in (@items)
AND DATE_EFF_FROM <= @shipedon
GROUP BY ITEM_KEY
SELECT * from #rev shows no results.
SELECT @items = SUBSTRING( …
Run Code Online (Sandbox Code Playgroud) 如何使用合并多个过滤器sed
?
这是我的数据集
性别,城市,年龄 男性,伦敦32 男,曼彻斯特,32 男,牛津,64 女,牛津23 女,伦敦,33 男,牛津,45
我想确定所有包含“男性” 和“牛津”的行。这是我的方法:
sed -n '/male/,/oxford/p' file
Run Code Online (Sandbox Code Playgroud)
谢谢
batch-file ×1
cmd ×1
collation ×1
command-line ×1
scripting ×1
sed ×1
shell ×1
sql-server ×1
t-sql ×1
unix ×1
windows ×1