Tuesday, August 11, 2009

One way for array in batch file


  • ทำไม่เป็นหรอกนะ แต่เห็นวิธีนี้ง่ายดี เลยบันทึกเก็บไว้หน่อย
  • กันเหนียวอีกแหละ ^^'
  • ประเด็นมีอยู่ว่า เป็น newbie สำหรับ batch file
  • เริ่มเขียนไปแหละ 1 ไฟล์ แต่ยังใช้ loop และ array ไม่ค่อยเป็น
  • ตามที่มาเค้าบอก One way to do it is to create a text file
  • คือเรามีค่าอาไรบ้างให้เพิ่ม ค่านั้นต่อ 1 บรรทัด
  • จากนั้นใช้ for แบบนี้ได้เลย
  • a คือ ตัวแปรที่จะรับจาก text file ทีละบรรทัด
FOR /F "tokens=*" %a IN (file.txt) DO (
yourcommand
%a
)
@ECHO OFF
FOR /F %%A IN (C:\TEST\lpcqparm.cfg) DO (

@ECHO %%A:~0,9%

SET VAR=%%A
@ECHO %VAR%

)


ด้านล่างคือ ข้อความทั้งหมดที่เค้าตอบกัน

Ok, here's the thing - I know there's a way to do this as I worked on a question where we tried to parse drive letters like that, but the command that gave the drive letters worked strangely. Unfortunately, I don't remember the EXACT "for" command syntax for it (I'll try to dig it up but I'e participated in a LOT of questions).

One way to do it is to create a text file - fruits.txt - so the text file is your array. In your example, the text file would have 4 lines, one fruit per line, NOTHING ELSE.

Then this for command would execute the command for each fruit. The nature of a batch file won't allow it to run the next command until that one is done. (Again, there are ways around this, but you WANT this behaviour).

FOR /F "tokens=*" %a IN (fruits.txt) DO yourcommand %a

For a demonstration, run this command:
FOR /F "tokens=*" %a IN (fruits.txt) DO @Echo my fruit is %a

NOTE: when using the for command in a batch file, you need to use %% instead of % - so BATCH FILE ONLY:
FOR /F "tokens=*" %%a IN (fruits.txt) DO @Echo my fruit is %%a


ที่มา

No comments:

Post a Comment

Popular Posts