วิธีรับนามสกุลไฟล์จากชื่อไฟล์ใน PowerShell
ฉันกำลังทำงานในโครงการระบบอัตโนมัติ เมื่อฉันต้องแยกนามสกุลไฟล์ออกจากชื่อไฟล์โดยใช้ PowerShell ฉันลองใช้วิธีต่างๆ แล้ว และในบทช่วยสอนนี้ ฉันจะสำรวจวิธีการต่างๆ เพื่อดึงนามสกุลไฟล์จากชื่อไฟล์ใน PowerShell ด้วยสคริปต์ที่สมบูรณ์
หากต้องการรับนามสกุลไฟล์จากชื่อไฟล์ใน PowerShell คุณสามารถใช้วิธี Get-Extension จากคลาส [System.IO.Path] ตัวอย่างเช่น $fileExtension=[System.IO.Path]::GetExtension('C:\example\report.xlsx') จะจัดเก็บสตริง '.xlsx' ไว้ในตัวแปร $fileExtension วิธีนี้ตรงไปตรงมาและมีประสิทธิภาพในการแยกส่วนต่อท้ายที่ระบุประเภทไฟล์
รับนามสกุลไฟล์จากชื่อไฟล์ใน PowerShell
นามสกุลไฟล์คือส่วนต่อท้ายของชื่อไฟล์ที่ระบุประเภทไฟล์ มันถูกแยกออกจากชื่อไฟล์หลักด้วยจุด ตัวอย่างเช่น ใน 'document.pdf' นั้น '.pdf' คือนามสกุลไฟล์ที่บ่งบอกว่าไฟล์นั้นเป็นเอกสาร PDF
PowerShell จัดเตรียมวิธีการและ cmdlets ที่แตกต่างกันเพื่อรับนามสกุลไฟล์จากชื่อไฟล์
วิธีที่ 1: การใช้คลาส System.IO.Path
วิธีที่ง่ายที่สุดวิธีหนึ่งในการรับนามสกุลไฟล์ใน PowerShell คือการใช้คลาส [System.IO.Path] คลาสนี้มีวิธีการคงที่สำหรับการสร้าง การย้าย และการแจงนับผ่านไดเร็กทอรีและไฟล์
ต่อไปนี้คือสคริปต์ตัวอย่างที่อธิบายวิธีใช้คลาส [System.IO.Path] เพื่อแตกนามสกุลไฟล์:
# Define the full path of the file
$filePath = "C:\MyFolder\users.xlsx"
# Extract the extension from the file path
$fileExtension = [System.IO.Path]::GetExtension($filePath)
# Display the file extension
Write-Host "The file extension is: $fileExtension"ในสคริปต์ PowerShell ข้างต้น วิธีการ GetExtension() ถูกใช้เพื่อรับนามสกุลไฟล์จากเส้นทางแบบเต็มของไฟล์
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์โดยใช้โค้ด vs
วิธีที่ 2: การใช้ Get-ChildItem และ Select-Object
Get-ChildItem cmdlet ของ PowerShell เป็นอีกวิธีหนึ่งในการดึงรายละเอียดเกี่ยวกับไฟล์ เมื่อใช้ร่วมกับ Select-Object cmdlet คุณสามารถแยกและแสดงนามสกุลไฟล์ได้
ต่อไปนี้คือวิธีที่คุณสามารถใช้ cmdlets เหล่านี้เพื่อรับนามสกุลไฟล์:
# Define the directory path
$directoryPath = "C:\MyFolder"
# Get all files in the directory and select only the extension property
$fileExtensions = Get-ChildItem -Path $directoryPath | Select-Object Extension
# Display the file extensions
$fileExtensions | ForEach-Object { Write-Host "Found file extension: $($_.Extension)" }สคริปต์นี้จะเรียกไฟล์ทั้งหมดในไดเร็กทอรีที่ระบุ จากนั้นใช้ Select-Object เพื่อเลือกเฉพาะคุณสมบัติส่วนขยายของแต่ละไฟล์
ดูผลลัพธ์ในภาพหน้าจอด้านล่าง โดยจะแสดงนามสกุลไฟล์ทั้งหมดในโฟลเดอร์ดังกล่าว โดยที่ส่วนขยายที่ไม่ได้กล่าวถึงคือโฟลเดอร์ย่อย
วิธีที่ 3: การใช้ Split-Path
Split-Path cmdlet ใน PowerShell ได้รับการออกแบบมาเพื่อจัดการทั้งเส้นทางและใบไม้ของตำแหน่งที่กำหนด คุณสามารถใช้มันเพื่อแยกพาธและชื่อไฟล์ โดยแยกนามสกุล
ตัวอย่างสคริปต์ที่ใช้ Split-Path:
# Define the full file path
$filePath = "C:\MyFolder\Customers.xlsx"
# Use Split-Path to separate the file name and extension
$fileNameAndExtension = Split-Path -Path $filePath -Leaf
# Extract the extension from the full file name
$fileExtension = $fileNameAndExtension -replace '.*\.'
# Display the file extension
Write-Host "The file extension is: $fileExtension"ในสคริปต์นี้ Split-Path รับ leaf ของเส้นทาง (ชื่อไฟล์และนามสกุล) จากนั้นจะใช้นิพจน์ทั่วไปเพื่อลบทุกอย่างที่อยู่หน้าจุด เหลือเพียงนามสกุล
คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่างหลังจากที่ฉันรันสคริปต์โดยใช้โค้ด VS
วิธีที่ 4: การใช้นิพจน์ทั่วไป
PowerShell ยังสามารถใช้นิพจน์ทั่วไปเพื่อแยกนามสกุลไฟล์ออกจากชื่อไฟล์ได้
นี่คือสคริปต์ที่ใช้ regex เพื่อค้นหาส่วนขยาย:
# Define the filename
$fileName = "archive.tar.gz"
# Use regex to extract the file extension
if ($fileName -match "\.(?<Extension>[^.]+)$") {
$fileExtension = $Matches['Extension']
Write-Host "The file extension is: $fileExtension"
} else {
Write-Host "No file extension found."
}สคริปต์นี้ใช้ตัวดำเนินการ -match เพื่อตรวจสอบว่าชื่อไฟล์ตรงกับรูปแบบของนามสกุลไฟล์หรือไม่ หากพบรายการที่ตรงกัน ระบบจะแยกส่วนขยายโดยใช้ตัวแปรอัตโนมัติ $Matches
บทสรุป
ฉันหวังว่าตอนนี้คุณต้องเรียนรู้วิธีรับนามสกุลไฟล์จากชื่อไฟล์ใน PowerShell ฉันได้อธิบายวิธีการต่างๆ เพื่อรับนามสกุลไฟล์จากชื่อไฟล์ เช่น การใช้คลาส [System.IO.Path] หรือ cmdlet Get-ChildItem โดยใช้ Split -Path หรือโดยใช้นิพจน์ทั่วไป ฯลฯ หวังว่าจะช่วยได้
คุณอาจจะชอบ:
- วิธีค้นหาไฟล์ตามชื่อใน PowerShell
- เปลี่ยนชื่อไฟล์ด้วยวันที่ใน PowerShell
- จะแสดงรายการชื่อไฟล์เฉพาะใน PowerShell ได้อย่างไร
- คัดลอกและเปลี่ยนชื่อไฟล์ใน PowerShell


