วันพุธที่ 19 มิถุนายน พ.ศ. 2556

ปูพื้นฐาน(ขั้นเทพ) Batch File ตอน 2


มาต่อ For /f กัน...
่ก่อนอื่นดู dir *.* เครื่องนี้ว่าเป็นยังไงกันก่อน
 Volume in drive C is Windows 7
 Volume Serial Number is 6C82-C13D

 Directory of C:\

06/11/2009  04:42 AM                24 autoexec.bat
06/11/2009  04:42 AM                10 config.sys
05/10/2013  10:23 PM    <DIR>          Drivers
05/10/2013  10:25 PM    <DIR>          Intel
05/13/2013  02:48 PM    <DIR>          Kpcms
06/08/2013  01:49 PM    <DIR>          Program Files
05/10/2013  09:36 PM    <DIR>          Users
06/18/2013  04:38 PM         1,764,228 wialog.txt
06/10/2013  11:13 AM    <DIR>          Windows
               3 File(s)      1,764,262 bytes
               6 Dir(s)  96,140,525,568 bytes free

for /f "tokens=1,3-4" %%l in ('dir *.*') do echo %%l %%m %%n
หมายถึง เก็บบรรทัด dir *.* คอลัมภ์ 1 ใส่ %%l และ คอลัมภ์ 3 - 4 ใ่ส่ %%m-%%n
Volume drive C
Volume Number is
Directory C:\
06/20/2013 AM 73
06/11/2009 AM 24
06/11/2009 AM 10
05/10/2013 PM <DIR>
05/10/2013 PM <DIR>
05/13/2013 PM <DIR>
06/08/2013 PM <DIR>
05/10/2013 PM <DIR>
06/18/2013 PM 1,764,228
06/10/2013 AM <DIR>
4 1,764,335 bytes
6 96,140,525,568 bytes
*** สังเกตุ คอลัมภ์ 2 หายไป...เพราะถูกข้าม

for /f "tokens=1,3*" %%l in ('dir *.*') do echo %%l %%m %%n
หมายถึง เก็บบรรทัด dir *.* คอลัมภ์ 1 ใส่ %%l และ คอลัมภ์ 3 ใ่ส่ %%m ส่วน คอลัมภ์ที่ 4ไปจนสุด ใส่ %%n
Volume drive C is Windows 7
Volume Number is 6C82-C13D
Directory C:\
06/20/2013 AM 72 1.bat
06/11/2009 AM 24 autoexec.bat
06/11/2009 AM 10 config.sys
05/10/2013 PM <DIR>          Drivers
05/10/2013 PM <DIR>          Intel
05/13/2013 PM <DIR>          Kpcms
06/08/2013 PM <DIR>          Program Files
05/10/2013 PM <DIR>          Users
06/18/2013 PM 1,764,228 wialog.txt
06/10/2013 AM <DIR>          Windows
4 1,764,334 bytes
6 96,140,328,960 bytes free
*** สังเกตุ สามารถใช้ * เพื่อบอกสิ้นสุดข้อมูลได้

for /f "tokens=* skip=4" %%l in ('dir *.*') do echo %%l
หมายถึง เก็บบรรทัด dir *.* ข้ามมา 4 บรรทัด ทุกคอลัมภ์ ใส่ %%l
06/20/2013  10:01 AM                68 1.bat
06/11/2009  04:42 AM                24 autoexec.bat
06/11/2009  04:42 AM                10 config.sys
05/10/2013  10:23 PM    <DIR>          Drivers
05/10/2013  10:25 PM    <DIR>          Intel
05/13/2013  02:48 PM    <DIR>          Kpcms
06/08/2013  01:49 PM    <DIR>          Program Files
05/10/2013  09:36 PM    <DIR>          Users
06/18/2013  04:38 PM         1,764,228 wialog.txt
06/10/2013  11:13 AM    <DIR>          Windows
4 File(s)      1,764,330 bytes
6 Dir(s)  96,139,554,816 bytes free
*** สังเกตุ จะไม่มี 4 บรรทัดแรกมาแสดงผล

for /f "tokens=* skip=4 eol=4" %%l in ('dir *.*') do echo %%l
หมายถึง เก็บบรรทัด dir *.* ข้ามมา 4 บรรทัด ทุกคอลัมภ์ ใส่ %%l ไม่นำบรรทัดที่ 4 นำหน้ามาคำนวน
(eol=รับข้อมูลได้แค่ตัวอักษร เดียว)
06/20/2013  10:06 AM                74 1.bat
06/11/2009  04:42 AM                24 autoexec.bat
06/11/2009  04:42 AM                10 config.sys
05/10/2013  10:23 PM    <DIR>          Drivers
05/10/2013  10:25 PM    <DIR>          Intel
05/13/2013  02:48 PM    <DIR>          Kpcms
06/08/2013  01:49 PM    <DIR>          Program Files
05/10/2013  09:36 PM    <DIR>          Users
06/18/2013  04:38 PM         1,764,228 wialog.txt
06/10/2013  11:13 AM    <DIR>          Windows
6 Dir(s)  96,139,558,912 bytes free
*** สังเกตุ จะมีบรรทัด 4 File(s)      1,764,330 bytes มาแสดงผล
for /f "tokens=1-3,7* skip=4 delims=/ " %%l in ('dir *.*') do echo %%l %%m %%n %%o
หมายถึง เก็บบรรทัด dir *.* ข้ามมา 4 บรรทัด คอลัมภ์ให้วรรคด้วย / ดึงใส่ %%l %%m %%n จากนั้นวรรคด้วย Space bar ใส่ใน %%o
06 20 2013 1.bat
06 11 2009 autoexec.bat
06 11 2009 config.sys
05 10 2013 Drivers
05 10 2013 Intel
05 13 2013 Kpcms
06 08 2013 Program
05 10 2013 Users
06 18 2013 wialog.txt
06 10 2013 Windows
4 File(s) 1,764,357
6 Dir(s) 96,136,192,000
*** สังเกตุ วันเดือนปี ถูกแยกออกมาเป็น คอลัมภ์
จบเรื่องของ For และ คราวหน้าเจอกันใหม่...

ไม่มีความคิดเห็น:

แสดงความคิดเห็น