ค้นหาเว็บไซต์

วิธีรับนามสกุลไฟล์จากชื่อไฟล์ใน 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

บทความที่เกี่ยวข้อง