我如何追加" _05262015"在powershell中的文件名结尾?例如,我打开文件,向其写入数据,然后保存。
#Opening
$extractFile = @"
\\C:\Test\book1.csv
"@
#Saving
$DataSet.Tables[0] | Export-Csv $extractFile -NoTypeInformation
答案 0 :(得分:3)
这是我的方式:
$extractFile = '\\C:\Test\book1_{0}.csv' -F (Get-Date).ToString('MMddyyyy')
答案 1 :(得分: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
和完整的新路径来有效地重命名文件
答案 2 :(得分:1)
如果你想操纵一个现有的文件名字符串,你可以使用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
答案 3 :(得分:-2)
$newFileName = $extractFile + "_05262015"
$DataSet.Tables[0] | Export-Csv $newFileName -NoTypeInformation