it-swarm.asia

كيفية تسلسل السلاسل في ملف دفعي ويندوز للحلقة؟

أنا معتاد على البرمجة النصية لـ Unix Shell ، لكنني جديد على برمجة Windows.

لدي قائمة من السلاسل التي تحتوي على str1 ، str2 ، str3 ... str10. أريد أن أفعل مثل هذا:

for string in string_list
do
  var = string+"xyz"
  svn co var
end

لقد وجدت بعض الصفحات التي تصف كيفية ربط السلسلة في ملف دفعي. لكنه بطريقة ما لا يعمل في حلقة. لذلك ما زلت مربكة حول بناء جملة الدُفعات.

34
Marcus Thornton

في الدفعة ، يمكنك القيام بذلك مثل هذا:

@echo off

setlocal EnableDelayedExpansion

set "string_list=str1 str2 str3 ... str10"

for %%s in (%string_list%) do (
  set "var=%%sxyz"
  svn co "!var!"
)

إذا كنت لا تحتاج إلى المتغير !var! في أي مكان آخر في الحلقة ، يمكنك تبسيط ذلك إلى

@echo off

setlocal

set "string_list=str1 str2 str3 ... str10"

for %%s in (%string_list%) do svn co "%%sxyz"

ومع ذلك ، مثل C.B. أفضل PowerShell إذا كان ذلك ممكنًا:

$string_list = 'str1', 'str2', 'str3', ... 'str10'

$string_list | ForEach-Object {
  $var = "${_}xyz"   # alternatively: $var = $_ + 'xyz'
  svn co $var
}

مرة أخرى ، يمكن تبسيط هذا إذا كنت لا تحتاج $var في مكان آخر في الحلقة:

$string_list = 'str1', 'str2', 'str3', ... 'str10'
$string_list | ForEach-Object { svn co "${_}xyz" }
35
Ansgar Wiechers

جرب هذا ، مع سلاسل:

set "var=string1string2string3"

ومع متغيرات السلسلة:

set "var=%string1%%string2%%string3%"
37
Endoro