簡體   English   中英

變量中的Windows批處理變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM