簡體   English   中英

Windows CMD Batch:在循環中串聯變量NAME

[英]Windows CMD Batch: concatenating variable NAME in a loop

在Windows CMD批處理循環中,我想使用動態變量:list1,list2和list3,其中數字1-3是動態的(即:list&i),但我正在努力:

setlocal enabledelayedexpansion enableextensions
SET threads=3
set i=1

for /R %%x in (*.jpg) do  ( call set LISTNAME=LIST!i! & SET LIST!i!=!LISTNAME! "%%x" & set /A i=!i!+1  & if !i! gtr %threads% (set i=1))

echo "first" %LIST1%
echo "second" %LIST2%
echo "third" %LIST3%

我掙扎的確切地點是:

SET LIST!i!=!LISTNAME! "%%x" 

例如,我希望在哪里:

SET LIST1=!LIST1! "%%x"

但是listname只是轉換為字符串LIST1,而不是變量LIST1。 我也嘗試沒有成功:

SET LIST!i!=!LIST!i!! "%%x"

腳本的目的:將JPG文件名放在3個列表中,以編輯以回答第一個評論:以循環方式分布並以空格分隔的文件名。

假設采用循環分布,則可以通過模數計算輕松獲得列表編號。 出於演示目的,我僅輸出filename.ext而不包含drive:path。

@Echo off
setlocal enabledelayedexpansion enableextensions
Set /A "threads=3,i=0"
:: initialize List
For /L %%n in (1,1,%threads%) Do Set "List%%n="

for /R %%x in (*.jpg) do  ( 
  Set /A "n=i %% threads + 1,i+=1"
  for %%n in (!n!) do Set "List%%n=!List%%n! %%~nxx"
  rem call set "LIST!n!=%%LIST!n!%% %%~nxx"
)
echo "first " %LIST1%
echo "second" %LIST2%
echo "third " %LIST3%

樣本輸出

"first "  watch_dogs1.jpg watch_dogs4.jpg watch_dogs7.jpg
"second"  watch_dogs2.jpg watch_dogs5.jpg watch_dogs8.jpg
"third "  watch_dogs3.jpg watch_dogs6.jpg watch_dogs9.jpg

編輯插入延遲擴展的for變量類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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