如何在csv文件中获取文件名但在powershell中截断部分名称?

时间:2017-04-26 06:47:07

标签: powershell csv

我开始使用powershell脚本,该脚本从特定日期的文件夹中提取文件名,并将它们提取到新的csv文件中。我想要的是修剪每行第5个字符后的字符。我从这开始:

Get-ChildItem U:\data\*.* |Where{$_.LastWriteTime -gt (Get-
Date).AddDays(-1)} | Foreach-Object {$_.BaseName} > U:\result.csv 

我的结果是:

  • MMPM_SuperUser_24042017
  • MERHS_SuperUser_24042017
  • BRUSD_SuperUser_24042017
  • HDUJD_SuperUser_24042017
  • BDFOR_SuperUser_24042017

我想修剪_和之后每行的字符。 我希望结果是:

  • MMPM
  • MERHS
  • BRUSD
  • HDUJD
  • BDFOR

2 个答案:

答案 0 :(得分:0)

在变量中指定它并使用split方法用下划线分割。 完成拆分后,您将将值存储在数组中。 因此,零指数将给出结果。

这应该做你的工作:

$values= Get-ChildItem U:\data\*.* |Where{$_.LastWriteTime -gt (Get-date).AddDays(-1)} 
Foreach ($value in $values)
 {
 $value.BaseName.Split('_')[0] >> U:\result.csv
 }

答案 1 :(得分:0)

就这样做

Get-ChildItem "U:\data\" -file |Where {$_.LastWriteTime -gt (Get-Date).AddDays(-1) -and $_.BaseName -like '*_*' } | 
Foreach-Object {$_.BaseName.Split('_')[0]} > U:\result.csv 

#short version
gci "U:\data\" -file |? {$_.LastWriteTime -gt (Get-Date).AddDays(-1) -and $_.BaseName -like '*_*' } | 
% {$_.BaseName.Split('_')[0]} > U:\result.csv