【问题标题】:Powershell splitPowershell 拆分
【发布时间】:2014-09-26 10:46:58
【问题描述】:

LastWriteTime 有问题。 我需要拆分这个值:

09/26/2014 10:14:34 09/26/2014 08:09:59

我试过了:

foreach ($line in $data){write-host $line}. 

但我需要将它写到$date1$date2

这是我使用的代码:

$Folder = Get-ChildItem "\\SERVER-14\data$\backup" -Exclude $ExcludeFolders -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select Name, LastWriteTime -first 2
$LastFolderName = $Folder.Name
$LastFolderTime = $Folder.LastWriteTime

【问题讨论】:

  • 你能发布更多你的代码吗?我猜您正在尝试获取多个文件的最后写入时间并尝试将每次拆分为它的变量
  • 是的,我更新了我的帖子。
  • 您想对拆分日期做什么?将该数组导出到变量?如果您想要它的特定部分,它将是一个您可以操作的 [DateTime] 对象
  • 我想把它写到变量中。

标签: powershell foreach


【解决方案1】:

如果您知道在您的Select-Object 中总是得到-first 2 指定的2 个对象,您可以直接引用它们:

$date1 = $folder[0].lastWriteTime
$date2 = $folder[1].lastWriteTime

【讨论】:

  • 非常感谢。这正是我所需要的。
【解决方案2】:

如果您只想将第一个和第二个最后写入时间分配给变量,则将其附加到您的脚本中:

$date1 = $Folder[0].LastWriteTime
$date2 = $Folder[1].LastWriteTime

但您并不总是知道文件夹是否包含两个项目。正确地,您应该为 foreach 循环中的每个项目完成所有工作

foreach ($file in $Folder)
{
    #Do something
}

【讨论】:

    【解决方案3】:

    对于拆分字符串,您可以使用 Powershell -Split 运算符,该运算符使用正则表达式参数来控制拆分,或者对于像这样的简单情况,您可以使用 dotnet [string] split 方法,该方法在字符数组上进行拆分:

    PS C:\> $line -split ' '
    09/26/2014
    10:14:34
    09/26/2014
    08:09:59
    
    PS C:\> $line.split(' ')
    09/26/2014
    10:14:34
    09/26/2014
    08:09:59
    

    无论哪种方式,您都会得到一个拆分元素的数组。然后您可以使用数组切片有选择地将它们分配给变量:

    PS C:\> $date1,$date2 = ($line -split ' ')[0,2]
    PS C:\> $date1
    09/26/2014
    PS C:\> $date2
    09/26/2014
    
    PS C:\> $date1,$date2 = $line.split(' ')[0,2]
    PS C:\> $date1
    09/26/2014
    PS C:\> $date2
    09/26/2014
    

    见:

    about_split

    string methods

    【讨论】:

      【解决方案4】:
      $value = "09/26/2014 10:14:34 09/26/2014 08:09:59"
      
      $data = $value.Split(' ')
      # $data contains 4 values --> date, time, date, time
      #i set up some variables
      $date = $true;
      $savedDate = "";
      
      # Here we process the $data
      $data |
          # For each in powershell =  %  
          %{
                #every odd line ( if $date is true),  we save the date value
                if($date){$date=$false;$savedDate=$_} 
                # every even line (if $date is false), we stick together the date and time
                else{$date=$true;$savedDate+ " " + $_;}
          }
      

      非常“直截了当”的解决方案...(可能没那么简单,抱歉)

      在空白处分割 遍历所有字符串, 每次您有一个日期和一个时间字符串彼此跟随。 因此将第一个保存为日期, 每秒的值包含时间,将其放在一起并继续下一个日期...

      【讨论】:

      • 对我来说看起来并不简单。想补充一点解释吗?
      • 对不起。但在我看来并不简单。我刚开始使用 powershell。
      • 这个我再清楚不过了,我想,我希望它有用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 2021-09-25
      • 2019-12-16
      • 2013-09-26
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多