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

PowerShell เพิ่มวันที่ในชื่อไฟล์ [6 วิธี]


หากคุณไม่ต้องการเปลี่ยนชื่อไฟล์และเพียงต้องการเปลี่ยนรูปแบบสตริง คุณสามารถข้ามไปที่ส่วน join-path ได้โดยตรง

ใช้ เปลี่ยนชื่อ-รายการ Cmdlet

ใช้ -Rename-Item cmdlet เพื่อเพิ่มวันที่ลงในไฟล์ใน PowerShell

ใช้ -Rename-Item Cmdlet:

$Filename = "C:\Test1\File1.txt"
$newFilename = "C:\Test1\File1_$(Get-Date -Format yyyy-MM-dd).txt"
Rename-Item -Path $Filename -NewName $newFilename
Write-Host "New filename: $newFilename"

เอาท์พุต :

New filename: C:\Test1\File1_2023-04-25.txt

รหัสข้างต้นทำงานในลักษณะดังต่อไปนี้:

  • ขั้นแรกให้ตั้งค่าตัวแปร $Filename เป็นพาธของไฟล์ต้นฉบับที่เราต้องการเปลี่ยนชื่อ ซึ่งก็คือ C:\Test1\File1.txt
  • ต่อไป เราจะสร้างชื่อไฟล์ใหม่โดยต่อท้ายวันที่ปัจจุบันในรูปแบบ yyyy-MM-dd ต่อท้ายชื่อไฟล์ เราใช้คำสั่ง Get-Date พร้อมด้วยพารามิเตอร์ -Format เพื่อจัดรูปแบบวันที่ตามต้องการ ชื่อไฟล์ใหม่ที่ได้จะถูกจัดเก็บไว้ในตัวแปร $newFilename
  • หลังจากนั้นให้สั่ง Rename-Item เพื่อเปลี่ยนชื่อไฟล์ต้นฉบับเป็นชื่อไฟล์ใหม่ พารามิเตอร์ -Path ใช้เพื่อกำหนดเส้นทางของไฟล์เริ่มต้น ซึ่งจัดเก็บไว้ในตัวแปร $Filename ในขณะที่พารามิเตอร์ -NewName ใช้เพื่อระบุชื่อไฟล์ใหม่ ซึ่งจัดเก็บไว้ในตัวแปร $newFilename
  • สุดท้าย สคริปต์จะแก้ไขชื่อของ C:\Test1\File1.txt เป็น C:\Test1\File1_2023-04-19.txt โดยที่ yyyy- MM-dd ระบุวันที่ปัจจุบันในรูปแบบปี-เดือน-วัน

การใช้คลาส System.IO.Path ด้วย cmdlet Move-Item

ในการเพิ่มวันที่ให้กับชื่อไฟล์ เราสามารถใช้เมธอด System.IO.Paths และ Move-Item cmdlet ต่างๆ เพื่อเปลี่ยนชื่อของเมธอด

  • ใช้ GetDirectoryName() เพื่อรับชื่อของไดเร็กทอรี
  • ใช้ GetFileNameWithoutExtension() เพื่อรับชื่อไฟล์ที่ไม่มีนามสกุล
  • ใช้ GetExtension() เพื่อรับนามสกุลของไฟล์
  • ผนวกวันที่ปัจจุบันต่อท้ายชื่อไฟล์และเพิ่มนามสกุลในตอนท้าย
  • ใช้วิธี combine() เพื่อรวมไดเร็กทอรีและชื่อไฟล์
  • Move-Item cmdlet เพื่อเปลี่ยนชื่อไฟล์

ใช้ -แทนที่ตัวดำเนินการ:

[string]$filePath = "C:\Users\Arpit\Desktop\powershell\File1.txt";

[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName +"-"+[DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);

Move-Item -LiteralPath $filePath -Destination $newFilePath;

start-sleep -Seconds 30

เอาท์พุต :

File3-20230624-132353

ใช้วิธี [System.IO.Path]::ChangeExtension()

ใช้เมธอด [System.IO.Path]::ChangeExtension() เพื่อเพิ่มวันที่ลงในไฟล์ใน PowerShell วิธีการนี้มีประโยชน์เมื่อคุณต้องการเปลี่ยนนามสกุลของไฟล์ด้วย

ใช้ ChangeExtension() วิธีการ:

$filename = "C:\Test1\File1.txt"
$newExtension = [System.IO.Path]::ChangeExtension($filename, ".txt")
$newFilename = "{0}-{1}{2}" -f [System.IO.Path]::GetFileNameWithoutExtension($newExtension), (Get-Date -Format 'yyyy-MM-dd'), [System.IO.Path]::GetExtension($newExtension)
Rename-Item $filename $newFilename
Write-Host "New filename: $newFilename"

เอาท์พุต :

New filename: File1-2023-04-25.txt

รหัสข้างต้นทำงานในลักษณะดังต่อไปนี้:

  • ใช้เส้นทางไฟล์ของไฟล์ข้อความและกำหนดให้กับตัวแปร $filename
  • จากนั้นจะใช้คลาส .NET System.IO.Path เพื่อเปลี่ยนนามสกุลไฟล์ของ $filename เป็น .txt และกำหนดเส้นทางใหม่ให้กับ ตัวแปร $newExtension
  • นอกจากนี้ยังใช้คลาส .NET System.IO.Path เพื่อแยกชื่อไฟล์โดยไม่มีนามสกุลจาก $newExtension และจัดเก็บไว้ใน $newFilename
  • จากนั้นจะต่อท้ายวันที่ปัจจุบันในรูปแบบ yyyy-MM-dd และนามสกุลของไฟล์เป็น $newFilename โดยใช้ตัวดำเนินการจัดรูปแบบสตริง -f.
  • สุดท้ายนี้จะแสดงเอาต์พุตโดยใช้ Write-Host cmdlet โดยเพิ่มวันที่ปัจจุบันให้กับชื่อไฟล์และเปลี่ยนชื่อไฟล์ต้นฉบับด้วยชื่อไฟล์ใหม่

ใช้ Join-Path Cmdlet

ใช้ Join-Path cmdlet เพื่อเพิ่มวันที่ลงในไฟล์ใน PowerShell

ใช้ Join-Path Cmdlet:

$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "$filename-$formatDate.txt"
$newPath = Join-Path -Path $path -ChildPath $newFilename
Write-Host "$newpath"

เอาท์พุต :

C:\Test1\File1-2023-04-19.txt

Join-Path cmdlet เป็นวิธีที่มีประโยชน์ในการรวมเส้นทางและชื่อไฟล์ใน PowerShell ตัวอย่างเช่น เราสามารถใช้มันเพื่อสร้างชื่อไฟล์ใหม่พร้อมวันที่ต่อท้ายได้ ตัวอย่างเช่น โค้ดข้างต้นทำงานในลักษณะต่อไปนี้:

  • ตั้งค่าของตัวแปร $filename เป็น "File1"
  • ตั้งค่าของตัวแปร $path เป็น C:\Test1
  • รับวันที่และเวลาปัจจุบันโดยใช้ Get-Date cmdlet และเก็บไว้ในตัวแปร $date
  • จัดรูปแบบวันที่เป็นสตริงในรูปแบบ yyyyMMdd โดยใช้เมธอด ToString() และเก็บไว้ในตัวแปร $formatDate
  • เชื่อมต่อตัวแปร $filename และ $formatDate ด้วยตัวคั่นยัติภังค์และนามสกุลไฟล์ .txt และจัดเก็บไว้ในตัวแปร $newFilename .
  • ใช้ Join-Path cmdlet เพื่อรวมตัวแปร $path และ $newFilename เพื่อสร้างเส้นทางไฟล์แบบเต็มและเก็บไว้ในตัวแปร $เส้นทางใหม่.
  • สุดท้ายนี้ จะใช้ Write-Host cmdlet เพื่อส่งออกค่าของ $newPath ไปยังคอนโซลโดยมีวันที่ต่อท้ายตามรูปแบบที่อธิบายไว้

การใช้ตัวดำเนินการรูปแบบ -f

ใช้ตัวดำเนินการรูปแบบ -f เพื่อเพิ่มวันที่ลงในไฟล์ใน PowerShell

ใช้ตัวดำเนินการรูปแบบ -f:

$filename = "File1"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = "{0}_{1}.txt" -f $filename, $formatDate
Write-Host "$newFilename"

เอาท์พุต :

File1_2023-04-19.txt

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

โดยเฉพาะอย่างยิ่ง บรรทัด $newFilename="{0}_{1}.txt" -f $filename, $formattedDate จะสร้างสตริงใหม่สำหรับชื่อไฟล์โดยใช้สตริงรูปแบบที่มีตัวยึดตำแหน่ง {0} และ {1} สำหรับตัวแปร $filename และ $formattedDate ตามลำดับ

ตัวดำเนินการ -f จะแทนที่ตัวยึดตำแหน่งด้วยค่าที่สอดคล้องกันของตัวแปร ในท้ายที่สุด ผลลัพธ์จะแสดงชื่อไฟล์ที่สมบูรณ์และวันที่ปัจจุบันที่แสดงในรูปแบบ yyyy-MM-dd โดยคั่นด้วยเครื่องหมายขีดล่างและมีนามสกุล .txt

ใช้ตัวดำเนินการ -replace

ใช้ตัวดำเนินการ -replace เพื่อเพิ่มวันที่ลงในไฟล์ใน PowerShell

ใช้ -แทนที่ตัวดำเนินการ:

$filename = "File1.txt"
$path = "C:\Test1\"
$date = Get-Date
$formatDate = $date.ToString("yyyy-MM-dd")
$newFilename = $filename -replace "\.txt$", "-$formatDate.txt"
Write-Host "$newFilename"

เอาท์พุต :

File1-2023-04-19.txt

โค้ดด้านบนนี้คล้ายกับโค้ดสองโค้ดก่อนหน้านี้ แต่ใช้ตัวดำเนินการ -replace เพื่อแทนที่นามสกุลไฟล์ .txt ใน $filename ด้วยเครื่องหมายยัติภังค์และวันที่ที่จัดรูปแบบใน $formattedDate และจัดเก็บชื่อไฟล์ที่อัปเดตไว้ในตัวแปร $newFilename

สุดท้าย ผลลัพธ์สุดท้ายจะแสดงพร้อมกับเส้นทางไฟล์แบบเต็มของไฟล์ที่มีชื่อ File1 และวันที่ปัจจุบันในรูปแบบ yyyy-MM-dd โดยคั่นด้วยเครื่องหมายขีดล่าง และมีนามสกุลไฟล์ .txt

เมื่อพิจารณาวิธีแก้ปัญหาข้างต้น การเพิ่มวันที่ให้กับชื่อไฟล์ใน PowerShell เป็นงานทั่วไปที่สามารถทำได้โดยใช้ rename-item cmdlet คลาส System.IO.Path พร้อมด้วย Move-Item cmdlet, Join-Path cmdlet, ตัวดำเนินการรูปแบบ -f, ตัวดำเนินการ -replace, [System.IO.Path ]::ChangeExtension() วิธีการ

นั่นคือทั้งหมดที่เกี่ยวกับ PowerShell เพิ่มวันที่ให้กับชื่อไฟล์

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