[英]Windows Batch Variable within variable
在Windows批處理中,您可以在變量中設置變量嗎?
解釋:
所以%num%在變量范圍內。
set num=5
set cnum=test
set h1=%c%num%%
是否有可能使百分數像括號一樣工作? 輸出應為h1 = test
任何幫助,將不勝感激。
您可能正在尋找“呼叫設置”命令。 這將cnum設置為字符串c1,c2,c3等。每次%num%更改時它都會更改。 然后,您可以使用“調用集”將任何變量(例如h1)分配給變量cnum所代表的值。
@echo off
setlocal enabledelayedexpansion
set c5=test
set num=5
:: set cnum to string "c5"
set cnum=c%num%
:: set h1 to to the existing variable c5
call set "h1=%%%cnum%%%"
echo %h1%
你問題中的例子很亂,但我想我明白你在尋找什么:
@echo off
setlocal
set C1=apple
set C2=orange
set C3=banana
set num=2
:: Inefficient way without delayed expansion
:: This will be noticeably slow if used in a tight loop with many iterations
call echo %%C%num%%%
:: The remaining methods require delayed expansion
setlocal enableDelayedExpansion
:: Efficient way 1
echo(
echo !C%num%!
:: Efficient way 2 - useful if inside parenthesized block
:: where %num% will not give current value
echo(
for %%N in (!num!) do echo !C%%N!
:: Showing all values via a loop
echo(
for /l %%N in (1 1 3) do echo !C%%N!
你是在經歷這樣的事嗎?
cls
@echo off
setlocal EnableDelayedExpansion
Set num=5
Set "c!num!=test"
Echo !c5!
有關延遲擴展的詳細信息,請訪問http://ss64.com/nt/delayedexpansion.html 。
cls
@echo off
setlocal EnableDelayedExpansion
set num=4
set c1=this is a demo
set c2=second example
set c3=third
set c4=this is the one I want
set c5=last
Echo !c%num%!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.