如何在powershell中將「_05262015」附加到文件名的末尾?例如,我正在打開文件,向它寫入數據,然後保存。將mmDDyyyy添加到文件名
#Opening
$extractFile = @"
\\C:\Test\book1.csv
"@
#Saving
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation
如何在powershell中將「_05262015」附加到文件名的末尾?例如,我正在打開文件,向它寫入數據,然後保存。將mmDDyyyy添加到文件名
#Opening
$extractFile = @"
\\C:\Test\book1.csv
"@
#Saving
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation
我F你要操作一個現有的文件名字符串可以與IO.Path
類的方法做到這一點(例如):
$extractFile = 'C:\Test\book1.csv'
$date = Get-Date -f 'MMddyyyy'
$dirname = [IO.Path]::GetDirectoryName($extractFile)
$filename = [IO.Path]::GetFileNameWithoutExtension($extractFile) +
"_$date" + [IO.Path]::GetExtension($extractFile)
$extractFile = Join-Path $dirname $filename
這保存在我的當前目錄(ps1腳本所在的位置)不在$ extractFile中指定的目的地 – MasterOfStupidQuestions
這裏是這樣的,我做到這一點:
$extractFile = '\\C:\Test\book1_{0}.csv' -F (Get-Date).ToString('MMddyyyy')
我可以保留原始文件名,並執行如下操作:$ savefilename = $ extractFile -Format(Get-Date).ToString('MMddyyyy') – MasterOfStupidQuestions
@MasterOfStupidQuestions No. –
這不會將日期附加到文件名? – MasterOfStupidQuestions
$newFileName = $extractFile + "_05262015"
$DataSet.Tables[0] | Export-Csv $newFileName -NoTypeInformation
$extractFile = '\\C:\Test\book1.csv'
$suffix = Get-Date -Format '_MMddyyyy'
$newFile = $extractFile -replace '\.([^.]*)$',"$suffix.`$1"
Move-Item $extractFile -Destination $newFile
的-replace
運營商做了regular expression替代,其作用如下:
杉杉牛逼的說法是,我們要替換的匹配模式:
'\.([^.]*)$'
^^^
| | |
Dot | |
| End of string
Capture group with 0 or more non-Dot characters (file extension)
第二個參數是我們想要替換匹配模式的字符串:
"$suffix.`$1"
^ ^
| |
| $1 refers to that first capture group from the match pattern, escaped to avoid string expansion
PowerShell parser expands this to "__05262015" because we use double-quotes
所以$newFile
值變爲\\C:\Test\book1_05262015.csv
(至少今天)
最後,我們使用Move-Item
與煥發出新的路徑,有效地重命名文件
你看着'重新命名 - Item'和'GET-Date'?也許你想用'$ extractFile'來處理字符串? – Matt
您評論'#Opening'的部分不會打開文件。它僅僅定義了一個帶有文件名的變量(作爲多行字符串)。文件名從哪裏來?你有沒有在你的代碼(所以你可以簡單地定義字符串不同),還是來自其他地方(所以你必須修改現有的字符串)? –