หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 4 9 7 8 6 4 3

7 ธันวาคม พ.ศ.2549
674 Users On-Line.
Visitors - Page views
 8 2 3 6 5 6 1
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

การเปลี่ยนชื่อโฟลเดอร์ และ ชื่อไฟล์ให้เป็นตัวอักษรตัวเล็กทั้งหมด

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 5/11/2549 12:49:00
(อ่าน : 15486) 

โปรแกรมโบราณก็จริง แต่ยังใช้ประโยชน์ได้เหลือเฟือเหมิือนกันครานึงได้ไปที่พันธ์ทิพย์ เพื่อเอาฮาร์ดดิสต์ไปเปลี่ยน ก็เลยเลียบๆเคียงๆ ถามทางช่างเขาดู
ผม : "เอะ น้องเดี๋ยวนี้ทำไมฮาร์ดดิสต์มันพังเร็วจังเลยล่ะ"
ช่าง : "อ๋อ ... พี่ก้อดูที่ราคาของมันซิ"
ผม : อึ้ง ... เออตูไม่น่าถามเลย (คิดในใจ ... มันน่าเขกกะโหลกตัวเองนิ)

ปัจจุบันนี้เทคโนโลยีทั้งฮาร์ดแวร์ และ ซอฟท์แวร์ ไปถึงไหนกันแล้ว แต่ผมเองก็ยังชอบซ่อมแซมดิสต์ด้วยโปรแกรมโบราณๆอย่าง Norton Utilities Version 3 เหมือนเดิม แต่ครานี้ก็ถึงคราวซวยจนได้ เมื่อโปรแกรมได้ตรวจสอบฮาร์ดดิสต์ที่เป็น WinXp ที่ผมเก็บข้อมูลอยู่ (อ้อ ผมบูตจาก Windows 98) ปรากฏว่าชื่อไฟล์ และ นามสกุล บางตัว (ที่เยอะมาก) กลายเป็นตัวใหญ่ (Upper Case) กันเฉยเลย ดูแล้วมันคันเคืองสายตาพิกล แต่ก็จนปัญญา (แบบไม่รู้จริงๆ) ไม่รู้จะหาคำสั่ง หรือ โปรแกรมอะไรที่มันจะแปลงกลับไปเป็นตัวเล็กเหมือนเดิมได้ รำคาญสายตาตัวเองจริงๆ

อย่ากระนั้นเลยเมื่อตัวเราเขียนโปรแกรมเป็น จะช้าอยู่ไย เปิดโปรแกรม Visual Basic ขึ้นมา แล้วก็ลาก Common Control พื้นฐานเข้ามา 4 อัน ประกอบด้วย

  • DriveListBox - Drive1
  • DirListBox - Dir1
  • FileListBox - File1
  • และ CommandButton อีก 3 ตัว เป็นปุ่มไว้สั่งเปลี่ยนชื่อ Folder กะปุ่มเปลี่ยนชื่อไฟล์ ให้กลายเป็นตัวเล็ก และ ปุ่มจบการทำงาน (อันนี้ไม่รู้จะมาทำไม ... เปลือง)

    แบบว่าออกแบบค่อนข้างกึ่งอัตโนมือ เพื่อเลือกรายการเอาน่ะครับ อิอิอิ ก็คือต้องเลือก Folder ที่ต้องการมาก่อนแล้วก็สั่งโปรแกรมให้ Loop เอาทุกๆไฟล์ (หรือ เลือกเพียงไฟล์ๆเดียวก็ได้) เพื่อเปลี่ยนชื่อมันเอาครับ

     

    ออกแบบฟอร์ม
    ออกแบบฟอร์มแสดงผล

    เมื่อสั่งทำงาน
    ดูชื่อไฟล์ กะ นามสกุลแล้วมันอุจาดสายตาซะเหลือเกิน

    เมื่อสั่งทำงาน
    ให้คลิ๊กเลือกก่อน เมื่อต้องการเปลี่ยนชื่อเพียงไฟล์เดียว หากไม่เลือกแสดงว่าต้องการเปลี่ยนทั้งโฟลเดอร์

    ดาวน์โหลด Source Code - Visual Basic (SP6) ดาวน์โหลดโปรแกรม - Execute

    อ้อ ... หากท่าน Run โปรแกรมไม่ได้ กรุณาดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack มาติดตั้งก่อนน่ะครับ

    ลองมาดูโค้ดเล็กๆ กันครับ
    Option Explicit

    Private Sub cmdExit_Click()
        End
    End Sub

    Private Sub cmdUpdateFile_Click()
        If File1.ListCount > 0 And File1.ListIndex < 0 Then  ' ทดสอบว่ามีรายชื่อไฟล์หรือไม่ และ ตรวจสอบว่าไม่มีการกดคลิ๊กเลือกใน FileListBox นั่นคือต้องการเปลี่ยนชื่อทั้งโฟลเดอร์
            Call ChangeFile2Lower(Dir1.Path)  ' ไปโปรแกรมย่อยที่ให้เปลี่ยนชื่อไฟล์ โดยส่งค่าตำแหน่งปัจจุบันไปด้วย
        ElseIf Len(Trim(File1.FileName)) <> 0 Then
            Call ChangeSingleFile2Lower(Dir1.Path, File1.FileName)  ' ไปโปรแกรมย่อยที่ให้เปลี่ยนชื่อไฟล์ๆเดียว โดยส่งค่าตำแหน่งปัจจุบัน และ ชื่อไฟล์ที่ต้องการไปด้วย
        End If

        File1.FileName = Dir1.List(Dir1.ListIndex)
        File1.Refresh
    End Sub

    Private Sub cmdUpdateFolder_Click()
        Call ChangeFolder2Lower (Dir1.Path)  ' ไปโปรแกรมย่อยที่ให้เปลี่ยนชื่อโฟลเดอร์ โดยส่งค่าตำแหน่งปัจจุบันไปด้วย
        Dir1.Path = Dir1.List(Dir1.ListIndex - 1)
        Dir1.Refresh
    End Sub

    Private Sub Dir1_Change()
        File1.FileName = Dir1.List(Dir1.ListIndex)
        txtPath.Text = Dir1.List(Dir1.ListIndex)
    End Sub

    Private Sub Drive1_Change()
        Dir1.Path = Drive1.Drive
        File1.FileName = Dir1.List(Dir1.ListIndex)
    End Sub

    Private Sub Form_Load()
        txtPath.Text = Dir1.Path
        File1.FileName = Dir1.List(Dir1.ListIndex)
        lblFile(1).Caption = "คลิ๊กเลือกไฟล์เมื่อ ต้องการเปลี่ยนชื่อเพียง ไฟล์เดียว"
    End Sub

    Sub ChangeFolder2Lower(FolderSpec)
        Dim OldFolder$, NewFolder$
        OldFolder = FolderSpec  ' ชื่อโฟลเดอร์เดิม
        NewFolder = LCase(FolderSpec)  ' ชื่อโฟลเดอร์ใหม่ ด้วยฟังค์ชั่น Lower Case เพื่อแปลงตัวอักษรเป็นตัวเล็ก
        Name OldFolder As NewFolder
    End Sub

    Sub ChangeSingleFile2Lower(FolderSpec, fName)  ' รับค่าตำแหน่งโฟลเดอร์ และ ชื่อไฟล์
        Dim OldFileName$, NewFileName$
        OldFileName = FolderSpec & "\" & fName
        NewFileName = FolderSpec & "\" & LCase(fName)
        Name OldFileName As NewFileName
    End Sub

    Sub ChangeFile2Lower(FolderSpec)
        Dim fs, f, f1, fc
        Dim OldFileName$, NewFileName$
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(FolderSpec)
        Set fc = f.Files
        For Each f1 In fc  ' ทำงานไปเรื่อยๆ จนกว่าจะหมดรายชื่อไฟล์ที่มีอยู่ในโฟลเดอร์นั้นๆ
            OldFileName = FolderSpec & "\" & f1.Name  ' ชื่อไฟล์เดิม
            NewFileName = FolderSpec & "\" & LCase(f1.Name)  ' ชื่อไฟล์ใหม่ ด้วยฟังค์ชั่น Lower Case เพื่อแปลงตัวอักษรเป็นตัวเล็ก
            Name OldFileName As NewFileName  ' ใช้คำสั่ง Name เปลี่ยนชื่อเก่าเป็นชื่อใหม่
        Next
    End Sub

    แฮะๆๆ เป็นไงครับโปรแกรมเล็กๆ (แต่ไม่กระจอกน่ะ ... ขืนดูถูกแม้กระทั่งงานตัวเอง ก็อย่าหวังว่าคนอื่นเขาจะมาชื่นชมงานของเราเล้ยยยย) อย่างนี่ก็มีประโยชน์ได้เหมือนกัน หากท่านใดรู้วิธีการที่จะให้มันง่ายกว่านี้ โปรดถ่ายทอด บอกต่อๆ กันด้วยน่ะครับ อย่าเก็บงำไว้เพียงลำพังเลยครับ


  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560