2015-05-26 30 views
0

如何在powershell中將「_05262015」附加到文件名的末尾?例如,我正在打開文件,向它寫入數據,然後保存。將mmDDyyyy添加到文件名

#Opening 
$extractFile = @" 
\\C:\Test\book1.csv 
"@ 
#Saving 
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation 
+0

你看着'重新命名 - Item'和'GET-Date'?也許你想用'$ extractFile'來處理字符串? – Matt

+2

您評論'#Opening'的部分不會打開文件。它僅僅定義了一個帶有文件名的變量(作爲多行字符串)。文件名從哪裏來?你有沒有在你的代碼(所以你可以簡單地定義字符串不同),還是來自其他地方(所以你必須修改現有的字符串)? –

回答

1

我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 
+0

這保存在我的當前目錄(ps1腳本所在的位置)不在$ extractFile中指定的目的地 – MasterOfStupidQuestions

3

這裏是這樣的,我做到這一點:

$extractFile = '\\C:\Test\book1_{0}.csv' -F (Get-Date).ToString('MMddyyyy') 
+0

我可以保留原始文件名,並執行如下操作:$ savefilename = $ extractFile -Format(Get-Date).ToString('MMddyyyy') – MasterOfStupidQuestions

+0

@MasterOfStupidQuestions No. –

+0

這不會將日期附加到文件名? – MasterOfStupidQuestions

-2
$newFileName = $extractFile + "_05262015" 
$DataSet.Tables[0] | Export-Csv $newFileName -NoTypeInformation 
+5

雖然這在技術上確實回答了這個問題,因爲它被直接詢問。我覺得OP在擴展之前真的需要添加。 – EBGreen

+1

一般來說,如果答案包含對代碼意圖做什麼的解釋,以及爲什麼解決問題而不介紹其他問題,答案會更有幫助。 (這篇文章被至少一個用戶標記過,大概是因爲他們認爲一個沒有解釋的答案應該被刪除。提供者ping @ humble.rumble誰可能不是標記者。) –

+0

我投了票,因爲我沒有感覺到它實際上解決了OP所具有的問題。我認爲我的第一條評論很明確。 – EBGreen

2

$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與煥發出新的路徑,有效地重命名文件