Month: February 2020

  • การเชื่อมต่อ Dell EMC SC Series (SAN Storage) กับ Windows 2019 ด้วย iSCSI Microsoft MPIO

    ทำไมต้องเชื่อมต่อ SAN Storage ด้วย MPIO มีข้อดีอย่างไร ต้องตั้งค่าอย่างไรให้ถูกต้อง

    Reference :
    https://www.youtube.com/watch?v=hsXtfab-xNM Dell EMC SC Series Storage : Microsoft Multipath I/0 (MPIO) Best Practice
    https://downloads.dell.com/manuals/all-products/esuprt_software/esuprt_it_ops_datcentr_mgmt/general-solution-resources_white-papers3_en-us.pdf Dell EMC SC Series Storage and Microsoft Multipath I/O
    https://www.youtube.com/watch?v=Z2ICF8yzFkU How-to: Configure iSCSI MPIO on Windows Server 2012 R2
    https://www.starwindsoftware.com/blog/lacp-vs-mpio-on-windows-platform-which-one-is-better-in-terms-of-redundancy-and-speed-in-this-case-2 ISCSI: LACP vs. MPIO

    Environment :

    – Dell EMC SC5020

    – Windows Server 2019 Standard Edition

    • MPIO ย่อมาจาก Multipath Input/Output เป็น Feature ของการเชื่อมต่อไม่ว่าจะเป็น iSCSI หรือ Fiber Channel ที่ต้องการให้ Server ไม่สับสนเมื่อมีการคุยกับ Storage หลายเส้นทาง (Storage ต่อเน็ตหลายเส้น และ Server ก็ต่อเน็ตหลายเส้น รวมถึงมีหลาย IP ไม่ได้ทำแบบหลายเส้นรวมเป็น Link เดียว) ซึ่งถ้าไม่ใช้ความสามารถนี้ จะทำให้ Server เห็น Volume หรือ LUN บน Storage เป็นหลาย ๆ อันทั้งที่เป็นอันเดียวกัน
    • นอกจากนี้ MPIO ยังสามารถทำ Load Balance โดยการกระจายการเชื่อมต่อโดยมีหลายวิธีให้เลือกใช้งานเช่น Round Robin (ไล่ลำดับไปเรื่อย ๆ แล้วกลับมาเริ่มที่ connection ที่ 1 เช่น 12341234)
    • ยกตัวอย่างในกรณีไม่ได้ทำ MPIO ได้ดังรูป
    • หลังจากทำ MPIO จะได้ดังรูป
    • MPIO ไม่ได้ติดตั้งโดย Default บน Windows Server โดยสามารถติดตั้งได้จาก Server Manager GUI โดยการ Add Feature ดังรูป
    • หรือติดตั้งผ่าน PowerShell ดังนี้
    Enable-WindowsOptionFeature -Online -FeatureName MultipathIO
    • หลังจากติดตั้งเสร็จให้ Restart Server
    • สำหรับ Dell EMC SC Series ต้องทำการแก้ไข Registry ของ Windows ด้วย PowerShell Script ดังนี้
    # MPIO Registry Settings script
    # This script will apply recommended Dell Storage registry settings
    # on Windows Server 2008 R2 or newer
    #
    # THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND.
    # THE ENTIRE RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE
    # REMAINS WITH THE USER.
    # Assign variables
    $MpioRegPath = "HKLM:\SYSTEM\CurrentControlSet\Services\mpio\Parameters"
    $IscsiRegPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\"
    $IscsiRegPath += "{4d36e97b-e325-11ce-bfc1-08002be10318}\000*"
    # General settings
    Set-ItemProperty -Path $MpioRegPath -Name "PDORemovePeriod" `
    -Value 120
    Set-ItemProperty -Path $MpioRegPath -Name "PathRecoveryInterval" `
    -Value 25
    Set-ItemProperty -Path $MpioRegPath -Name "UseCustomPathRecoveryInterval" `
    -Value 1
    Set-ItemProperty -Path $MpioRegPath -Name "PathVerifyEnabled" `
    -Value 1
    # Apply OS-specific general settings
    $OsVersion = ( Get-WmiObject -Class Win32_OperatingSystem ).Caption
    If ( $OsVersion -match "Windows Server 2008 R2" )
    {
     New-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckEnabled" –Value 1 `
     –PropertyType DWORD `
     –Force
     New-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckInterval" –Value 25`
     –PropertyType DWORD `
     –Force
    }
    Else
    {
     Set-ItemProperty –Path $MpioRegPath –Name "DiskPathCheckInterval" –Value 25
    }
    # iSCSI settings
    If ( ( Get-Service -Name "MSiSCSI" ).Status -eq "Running" )
    {
     # Get the registry path for the Microsoft iSCSI initiator parameters
     $IscsiParam = Get-Item -Path $IscsiRegPath `
     | Where-Object { ( Get-ItemProperty $_.PSPath ).DriverDesc `
     -eq `
     "Microsoft iSCSI Initiator" } `
     | Get-ChildItem `
     | Where-Object { $_.PSChildName -eq "Parameters" }
     # Set the Microsoft iSCSI initiator parameters
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "MaxRequestHoldTime" `
    -Value 90
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "LinkDownTime" `
    -Value 35
     Set-ItemProperty -Path $IscsiParam.PSPath -Name "EnableNOPOut" `
    -Value 1
    }
    Else
    {
     Write-Host "iSCSI Service is not running."
     Write-Host "iSCSI registry settings have NOT been configured."
    }
    Write-Host "MPIO registry settings have been configured successfully."
    Write-Host "The system must be restarted for the changes to take effect."
    • หลังจากรัน Script PowerShell ให้ Restart Server อีกรอบ
    • เพื่อให้เข้าใจง่ายขึ้นสามารถยกตัวอย่างการใช้งาน Multipath ได้ดัง Diagramในรูป
    • ตัวอย่างการตั้งค่าใน SAN Storage (Dell SC5020) โดยจะมีทั้งหมด 2 Controller ซึ่งแต่ละ Controller จะมี 4 Port
    • ซึ่งเมื่อตรวจสอบในฝั่ง Windows จะเห็นว่ามี Connection ที่เกิดจากการ Discovery โดยใส่ IP ของ ISCSI ปลายทาง จำนวน 8 Connection ซึ่งต้องเข้าไปตั้งค่าใน Target ให้มีการใช้งานแบบ multi-path ด้วยทุก Connection
    • ซึ่งเราสามารถเลือกใน Advance ได้อีกว่าจะให้เชื่อมต่อไปยัง IP หลัก IP ใด โดยแนะนำให้เลือกสลับไปตาม IP ที่มี
    • เมื่อตั้งค่าถูกต้องแล้วจะสามารถตรวจสอบได้ที่หน้า Properties จะเห็นว่ามี 2 Session
    • ซึ่งเราสามารถเลือกได้ว่าการเลือก Session ให้วิธีเลือกแบบไหน ในรูปจะเป็นแบบ Round Robin ซึ่งในกรณีมี Storage ซึ่ง Target Portal จะเป็น IP ที่เลือกในขั้นตอนก่อนหน้า
    • โดยสรุปแล้วสามารถมาดูได้ที่ Disk Management ใน Tab MPIO ว่ามี Path ในการ Active กี่ Path ถ้ามีมากกว่า 1 แสดงว่ามีการตั้งค่า Multi-Path เรียบร้อยแล้ว
    • สุดท้ายถ้าอยากรู้ว่าการตั้งค่า Work ไหมอาจจะต้องทำการตรวจสอบ Traffic ที่ Switch ว่ากระจายทุก Port ไหม หรือลองปิด Switch หรือถอดสายทิ้งสักข้าง หรือ ถอดสายที่ Server ออกทิ้งสัก Port ดูว่ายังสามารถทำงานได้หรือไม่ (ซึ่งผมไม่ได้ทดสอบ Capture มาให้ดู เพราะมีเวลาไม่มากพอให้ทดสอบ)

    สุดท้ายอาจจะงงว่าทำไปทำไมหลัก ๆ ข้อแรกคือเพื่อ Load Balance การใช้งานให้กระจายทุก Port ที่ SAN Storage ทำให้ได้ประสิทธิภาพสูงสุด (ซึ่งต้องมี Server มาต่อหลายตัว โดยการเชื่อมต่อต้องไม่ทำ link aggregation ต้อง FIX IP ต่อ Port) ข้อสองคือในกรณีที่ Port ใดมีปัญหาก็ยังสามารถใช้งานต่อได้ ซึ่งการทำ MPIO ดีกว่าการทำ Link Aggregation ในด้าน Performance ที่ทำได้ดีกว่า เพราะสามารถกระจายได้ลึกในระดับ Session (การทำ Multi Session per Connection ผ่าน Link Aggregation ทำไม่ได้เฉพาะ Windows นะครับ อาจจะทำได้ใน OS อื่น ๆ ) สามารถอ่านเพิ่มเติมผลการทดสอบได้ที่ https://www.starwindsoftware.com/blog/lacp-vs-mpio-on-windows-platform-which-one-is-better-in-terms-of-redundancy-and-speed-in-this-case-2

  • Byeๆ TLS1.0 TLS1.1

    ใช้ Firefox beta อยู่เลยจะได้รับ Feature อะไรใหม่ๆ อยู่เรื่อยๆ จนเมื่อ beta 73 กว่าๆ เริ่มเข้าเว็บบางเว็บในมหาวิทยาลัยไม่ได้ จะปรากฏหน้าดังนี้

    เว็บสามัญประจำบ้านแห่งหนึ่ง

    อ่านดูถึงได้รู้ว่าออ เค้าจะเลิก TLS1.0 และ TLS1.1 แล้วจริงประกาศไว้นานละว่าจะเลิกปีนี้!! สำหรับ Firefox จะเลิกในรุ่น 74 และ Chrome น่าจะรุ่น 81 ส่วน Microsoft และ Safari ก็จะปิดในครึ่งปีแรก ในปีนี้เช่นกัน

    https://www.techtalkthai.com/old-tls-protocol-has-been-dropped-by-all-major-browsers-in-2020/

    เอ้าเลยเช็คเว็บตัวเองสักหน่อยเริ่มจาก ทดสอบกับเว็บที่เคยได้ A+ ผลเป็นดังรูป

    ม่ายยย

    อัยย่ะละก๊ะ…. เหลือ B เพราะเปิด TLS1.0 และ TLS1.1 เอาไว้ ปิดให้ไว

    วิธีการคือ (สำหรับ Apache2)

    แก้ไขแฟ้ม /etc/apache/mod-enabled/ssl.conf หาข้อความว่า

     SSLProtocol All -SSLv3

    (บางคนอาจจะมี -SSLv2 ด้วยแต่ apache2 ไม่สนับสนุน SSLv2 โดยปริยาย (default) แล้ว) เปลี่ยนข้อความข้างต้นเป็น

    SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1

    บันทึกแล้ว restart apache ให้เรียบร้อย เมื่อไปตรวจใหม่ได้ผลตามภาพ

    เย่ กลับมา A+ แล้ว จบขอให้สนุก

    เกี่ยวข้อง

    https://sysadmin.psu.ac.th/hardening-your-http-response-headers/

    https://sysadmin.psu.ac.th/เปลี่ยน-certificate/

  • การ Connect Navicat ผ่าน xampp-linux 7.3.12 บน Ubuntu 18.04

    1. Download ไฟล์ ntunnel_mysqli.php
      https://qrgo.page.link/6G6uX
    2. โยน File ชื่อว่า ntunnel_mysqli.php เข้าไปใน Server ที่ wwwroot
    3. ทดสอบโดยการเข้าเว็บบราว์เซอร์ ด้วย : 192.168.xxx.xxx/ntunnel_mysqli.php แล้วลอง login ดูว่าผ่านไหม ?
    4. เข้าไปที่โปรแกรม Navicat
    5. ไปที่เมนู Connection เลือกเอาเลยว่าต้องการ Connection แบบไหน

    6. ไปที่ General
    – Connection Name = ตั้งชื่ออะไรก็ได้
    – Host Name / IP Address = localhost
    – Port = 3306
    – User Name = root หรือ User ที่เรา Add ใน phpmyadmin
    – Password = Password ที่เรา Add ใน phpmyadmin

    7. ไปที่ HTTP
    – ติ๊กเลือก Use HTTP Tunnel
    – Tunnel URL : https://192.168.xxx.xxx/ntunnel_mysqli.php หรือ https://xxxx.com/ntunnel_mysqli.php

    8. Test Connection

    หาก Connect ไม่ผ่าน ให้เข้าไปแก้ไฟล์ my.cnf บรรทัดที่เขียนว่า skip-networking ให้ไป # ปิดใว้ แล้ว Restart Service ใหม่อีกครั้ง

    หมายเหตุ : ผมได้ทดสอบกับ xampp-linux 7.3.12 บน Ubuntu 18.04
    php 5.4 up มันจะใช้ mysqli เป็นส่วนใหญ่ เลยต้องใช้ ntunnel_mysqli

  • เก่งจริงจริงเลยนะ ตัวแค่เนี้ยะ – บันทึกข้อมูลด้วย Noteblock กล่องจิ๋วแต่แจ๋ว

    กลับมาพบกันอีกแล้วค่า หลังจากที่ห่างหายไปอันเนื่องมาจากเทศกาลที่มีมากมายซะเหลือเกินค่ะ ไหนจะปีใหม่เอย ตรุษจีนเอย อีกทั้งงานราช งานหลวงก็มะรุมมะตู้มเข้ามาแบบพร้อมใจกันให้ผู้เขียนหายใจแบบหืดขึ้นคอจนไม่ได้มีเวลามาขีด ๆ เขียน ๆ เลยละค่ะ

    บทความนี้ว่ากันด้วยเรื่องของ Extension บน Chrome กันอีกเช่นเคยนะคะ วันนี้ขอนำเสนอ Extension ที่มีชื่อว่า Noteblock ค่ะ

    เจ้าตัว Extension ตัวนี้เป็น Extension ขนาดเล็ก (จิ๋ว) แต่ความสามารถไม่ได้เล็ก ๆ ตามขนาดนะคะ (แต่แจ๋ว) เพราะเจ้า Noteblock นั้น เป็นกล่องบนบราวเซอร์ที่จะมาช่วยให้เรา note ข้อมูลที่เราต้องการแบบที่ว่ามี idea อะไร อยากจะเก็บข้อมูลอะไร ก็พิมพ์พิมพ์ไว้ก่อน ได้แบบรวดเร็วเลยละค่า

    อย่างผู้เขียนเนี่ย จะใช้ Noteblock เป็น Tool อีกตัวนึง ด้วยความที่ต้องรับเรื่อง/รับปัญหาเกี่ยวกับการใช้งานระบบต่าง ๆ จาก User ในแต่ละวัน จากแต่ก่อนก็ใช้ Notepad note ข้อมูล (ด้วยภาษาที่เราเข้าใจแบบคนเดียว &743%@^&%$@) ไว้ก่อนบันทึกเข้าระบบเก็บสถิติบริการถาม-ตอบ ซึ่งต้องเสียเวลาในการ save เก็บไว้ในเครื่อง บวกกับนิสัย (ไม่น่ารัก) ที่จะชอบเก็บอะไร ๆ (โยนปึ้ง !) ไว้ก่อนบน Desktop เสมอ ก็จะรกหน้าจอเต็มไปหมดเลย

    และด้วยความที่ต้องเข้าออก Web App อยู่แล้ว ก็เลยหยิบเอา Noteblock มาใช้ซะเลย พอใช้ Noteblock แทน Note ของเราจะไม่ถูกแปะเอาไว้บน Desktop ให้รกแล้ว แถมยังไม่ต้องเสียเวลาในการ save ด้วย เพราะว่า Noteblock นั่นจะบันทึก Note ของเราบนเว็บบราวเซอร์ด้วยวิธี local storage แบบถาวรเอาไว้ โดยข้อมูลจะหายไปก็ต่อเมื่อเราไป clear เท่านั้นค่ะ
    แถมการเก็บข้อมูลที่แบ่งออกเป็น tab ได้นั้น ยังช่วยให้ง่ายต่อการจัดการข้อมูลอีกด้วยนะคะ

    ไม่เพียงเท่านี้ Noteblock นั้นยังมีความสามารถอื่น ๆ อีกนะคะ ดังนี้

    • ส่ง Note ที่เราบันทึกไว้ไปยังอีเมลได้
    • ดาวน์โหลด Note ที่บันทึกไว้ ออกมาเป็น ไฟล์ .txt ได้
    • จัดการ Note ของเราแยกเป็น tab และตั้งชื่อ tab เหล่านั้นได้ ซึ่งช่วยให้ง่ายต่อการจัดการ Note ของเราค่ะ
    • ปรับเปลี่ยนขนาดของกล่อง Note ได้

    รู้จัก Noteblock กันพอประมาณแล้ว ใครที่สนใจอยากจะลองใช้งานดู เรามาเริ่มจาก ติดตั้งเจ้า Noteblock กันก่อนค่ะ

    ติดตั้ง Noteblock ให้ Chrome

    1. ไปที่ลิงก์ https://chrome.google.com/webstore/category/extensions ค้นหาส่วนขยาย Noteblock และกดปุ่ม Add to Chrome เพื่อเริ่มการติดตั้ง Noteblock ให้กับ Chrome

    2. Chrome แสดงกล่องยืนยันการติดตั้ง Noteblock กดปุ่ม Add extension เพื่อยืนยันการติดตั้ง และรอจนกว่าจะสิ้นสุดการติดตั้ง

    เมื่อติดตั้งเรียบร้อยแล้ว จะมี icon Noteblock ที่มุมขวาบนของ Chrome โผล่ขึ้นมาเพื่อให้กดใช้งานค่ะ

    เริ่มใช้งาน Noteblock กัน!

    วิธีการใช้งาน Noteblock ง่าย ๆ ก็คือ คลิก icon Noteblock ก็จะมีกล่อง Noteblock โผล่ขึ้นมาบนบราวเซอร์ให้เราได้บันทึกข้อมูล ใครที่เป็นห่วงว่าเมื่อปิดบราวเซอร์ไปข้อมูลที่บันทึกไว้จะหายไปนั้น ไม่ต้องเป็นห่วงนะคะ ข้อมูลก็ยังคงอยู่เหมือนเดิมค่ะ อย่างที่บอกไว้ว่า Noteblock จะจัดเก็บข้อมูลของเราด้วยวิธี local Storage ข้อมูลจะถูก clear เมื่อเราลบออกไปเองค่ะ

    • หากต้องการเพิ่ม tab ข้อมูล tab ใหม่ ให้คลิกเครื่องหมาย + ก็จะมี tab Document พร้อมพื้นที่ว่าง ๆ ขึ้นมาให้เราค่ะ
    • หากต้องการเปลี่ยนชื่อ tab ก็ Double Click บน tab นั้น ๆ จะมีกล่องขึ้นมาให้ป้อนชื่อ tab ตามที่ต้องการแล้วก็กดปุ่ม SAVE เท่านี้ก็เป็นอันเปลี่ยนชื่อ tab เรียบร้อยแล้วล่ะคะ
    • ส่วนใครอยากส่ง note ที่เราได้บันทึกไว้ ไปทางอีเมล ก็คลิกปุ่ม Email แล้วก็ดำเนินการส่งได้เลยนะคะ
    • และหากต้องการดาวน์โหลดออกมาเก็บไว้ในเครื่องคอมพิวเตอร์ของเรา ก็คลิกปุ่ม Download จะได้ไฟล์ชื่อตามชื่อ tab ที่ตั้งไว้ (แก้ไขชื่อไฟล์ได้) นามสกุล .txt มาเก็บไว้ในเครื่องของเราค่ะ
    • หากต้องการลบข้อมูลใน tab ไหนออกไป ก็คลิกเลือก tab นั้น ๆ แล้วกดปุ่มเครื่องหมาย x ก็เป็นอันลบเรียบร้อยแล้วแล้วละคะ

    เป็นอย่างไรบ้างคะ ใช้งานง่ายมาก ๆ เลยใช่มั้ยคะ ลองนำไปปรับใช้ดูนะคะ น่าจะเป็น Extension อีกตัวหนึ่งที่มีประโยชน์กับเราค่ะ ใครจะ Note อะไรก็ได้ตามใจชอบ

    แล้วพบกันใหม่บทความหน้านะคะ

  • Open Google Calendar

    หลังจากครั้งก่อนได้แนะนำ extension สำหรับสร้างตารางนัดหมายบน Google Calendar ผ่านโปรแกรมเมล์ยอดนิยมตลอดกาล นั่นคือ Thunderbird นั่นเอง!!! อ่านได้ที่ Thunderbird Return วันนี้ก็จะมาเล่าถึง Extension อีกตัวทำงานอย่างเดียวกันแต่รอบนี้ไม่ต้องทำอะไรให้วุ่นวาย extension ชื่อเหมือนบทความคือ Open Google Calendar ขอข้ามวิธีติดตั้งเลยละกัน ติดตั้งเหมือน extension ตัวเก่ากลับไปอ่านบทความก่อนหน้าได้นะครับ

    เมื่อติดตั้งเสร็จแล้วจะมีปุ่มเพิ่มขึ้นมาที่มุมบนขวาดังรูป

    คลิกที่ Open Google Calendar แล้ว Sign In เข้าระบบให้เรียบร้อย จะได้ดังภาพ.

    Google Calendar

    สามารถเพิ่มอีเว้นท์อีไม่เว้นท์ได้เหมือนเปิดเว็บ กรั่กๆ ง่ายกว่าวิธีเก่า พอสมควรแก่การใช้งานบนเครื่องที่เราใช้คนเดียว!! ย้ำคนเดียว เพราะยังหาวิธี sign out ไม่เจอ 555

    วันนี้สั้นๆ แค่นี้ครับ จบขอให้สนุก…

  • การประยุกต์ใช้ Windows Command และ Batch File ในการจัดการไฟล์

    สืบเนื่องจากผู้เขียนได้รับโจทย์มาจากเพื่อนร่วมงาน แต่ยังไม่ได้เริ่ม งานนั้นก็ถูกยกเลิกไปอย่างรวดเร็ว แต่ในใจก็มีโซลูชันอยู่แล้วว่าจะจัดการอย่างไร จึงอยากมาบันทึกเก็บไว้ เผื่อผู้อ่านท่านอื่นๆ อาจจะนำไปใช้ประโยชน์ได้ไม่มากก็น้อย

    โจทย์ที่ว่าก็คือ ผู้ใช้มีไฟล์รูปภาพจำนวนหนึ่ง ประมาณหลายพันไฟล์

    ต้องการแยกเฉพาะรูปที่ต้องการออกมาจำนวนหนึ่ง โดยรูปที่ต้องการมีเป็นรายการอยู่ในไฟล์ excel

    วิธีการที่ง่ายที่สุดคือ เปิดไฟล์ excel นั้นขึ้นมา แล้วก็ไล่หาไฟล์รูปที่ต้องการทีละไฟล์แล้วย้ายไปไว้โฟลเดอร์อื่นจนครบ ถ้าไฟล์ที่ต้องการมีจำนวนไม่มากนัก วิธีการนี้ก็สะดวกและไม่ได้ใช้เวลานานมากจนเกินไป แต่ถ้าไฟล์ที่ต้องการมีเป็นหลักร้อยหรือพัน วิธีนี้คงไม่สะดวกแน่ๆ ผู้เขียนจึงขอแนะนำการใช้ Command และ Batch File เพื่อแก้ปัญหานี้

    ก่อนอื่นเราไปซ้อมมือกันก่อน สมมติว่าไฟล์ต้นฉบับอยู่ใน d:\sources และต้องการย้ายไฟล์ที่ต้องการไปไว้ที่ d:\destinations

    ให้เราเปิด cmd ขึ้นมา จากนั้นพิมพ์คำสั่ง

    copy d:\sources\wp_ss_20130130_0001.png d:\destinations

    คำสั่งนี้จะเป็นการ copy ไฟล์ wp_ss_20130130_0001.png ที่อยู่ใน d:\sources ไปยัง d:\destinations ซึ่งเราสามารถใช้คำสั่งนี้จากที่ไหนของเครื่องก็ได้ แต่ถ้าเราอยู่ในโฟลเดอร์ sources อยู่แล้ว เราสามารถระบุเฉพาะชื่อไฟล์เพียงอย่างเดียวก็ได้ เช่น copy wp_ss_20130130_0001.png d:\destinations

    จากความรู้ด้านบนจะเป็นการ copy ไฟล์ทีละไฟล์ ถ้าต้องการ copy หลายๆ ไฟล์ เราจะใช้สิ่งที่เรียกว่า batch file เข้ามาช่วย โดยทำตามขั้นตอนดังต่อไปนี้

    1. เปิด notepad ขึ้นมา และพิมพ์คำสั่ง

    copy wp_ss_20130130_0001.png d:\destinations
    copy wp_ss_20130130_0001.png d:\destinations

    จากนั้นเซฟเป็นไฟล์ชื่อ copy.bat ไว้ใน d:\sources นามสกุลไฟล์จะต้องเป็น .bat เท่านั้น ไม่ใช่ .txt

    2. กลับไปที่ command และพิมพ์คำสั่ง copy.bat

    จะเห็นว่า copy.bat เป็นการทำคำสั่งที่อยู่ภายใน batch file ถึงตรงนี้แล้วท่านผู้อ่านน่าจะพอเห็นแนวทางแล้วว่าเราจะ copy เฉพาะไฟล์ที่อยู่ใน excel ได้อย่างไร นั่นคือเราจะไปสร้างชุดคำสั่งการ copy จากไฟล์ excel นั่นเอง

    3. กลับไปที่ไฟล์ excel จะเห็นว่าชื่อไฟล์อยู่ในคอลัมน์ A ไปที่คอลัมน์ B และพิมพ์

    ="copy " & A1 & " d:\destinations"

    4. copy คำสั่งลงมาจนครบทุกไฟล์

    5. copy คำสั่งในคอลัมน์ B ทั้งหมดไปวางไว้ในไฟล์ copy.bat และเซฟ

    6. ไปที่ command และพิมพ์คำสั่ง copy.bat อีกครั้ง

    เป็นอันเสร็จสิ้น หวังว่าบทความประเดิมบล็อกของผู้เขียน น่าจะมีประโยชน์กับผู้อ่านทุกท่านที่หลงเข้ามาไม่มากก็น้อย

    จนกว่าจะอยากเขียนเรื่องใหม่

    สวัสดีครับ