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-Itemcmdlet เพื่อเปลี่ยนชื่อไฟล์
ใช้ -แทนที่ตัวดำเนินการ:
[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.txtJoin-Path cmdlet เป็นวิธีที่มีประโยชน์ในการรวมเส้นทางและชื่อไฟล์ใน PowerShell ตัวอย่างเช่น เราสามารถใช้มันเพื่อสร้างชื่อไฟล์ใหม่พร้อมวันที่ต่อท้ายได้ ตัวอย่างเช่น โค้ดข้างต้นทำงานในลักษณะต่อไปนี้:
- ตั้งค่าของตัวแปร
$filenameเป็น"File1" - ตั้งค่าของตัวแปร
$pathเป็น C:\Test1 - รับวันที่และเวลาปัจจุบันโดยใช้
Get-Datecmdlet และเก็บไว้ในตัวแปร$date - จัดรูปแบบวันที่เป็นสตริงในรูปแบบ
yyyyMMddโดยใช้เมธอดToString()และเก็บไว้ในตัวแปร$formatDate - เชื่อมต่อตัวแปร
$filenameและ$formatDateด้วยตัวคั่นยัติภังค์และนามสกุลไฟล์.txtและจัดเก็บไว้ในตัวแปร$newFilename. - ใช้
Join-Pathcmdlet เพื่อรวมตัวแปร$pathและ$newFilenameเพื่อสร้างเส้นทางไฟล์แบบเต็มและเก็บไว้ในตัวแปร$เส้นทางใหม่. - สุดท้ายนี้ จะใช้
Write-Hostcmdlet เพื่อส่งออกค่าของ$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 เพิ่มวันที่ให้กับชื่อไฟล์
