我们如何使用Windows Powershell脚本替换文本文件中的日期?

时间:2017-12-19 07:42:31

标签: arrays windows shell powershell automation

我正在编写一个windows powershell脚本来打开/编辑文本文件。

它有许多记录,每条记录都以逗号分隔值(csv)排序:

我想要实现的步骤:

  1. 打开服务器A上的目录中的文本文件。
  2. 使用“当前日期”或其他编辑“日期”字段。
  3. 将同一文本文件保存在同一位置(文件夹)。
  4. 将所有文件复制到不同服务器B中的新文件夹。
  5. 我刚刚编写了这段代码:

    $path = "C:\PSFiles\Rec_File_001.txt" 
    $Filedata = Get-Content $path
    $Record01 = $Filedata[0].split(",")
    $Record01Date = $Record01[3]
    $Record01CurrentDate = Get-Date -format yyMMdd
    $Record01 -replace $Record01Date, $Record01CurrentDate
    Set-Content $path
    

    请对此有何帮助?

3 个答案:

答案 0 :(得分:1)

您在这里有多个问题。我将解决标题中显示的那个 - 替换文本文件中的文本。

剧本:

# current date in a new format
$CurrentDate = Get-Date -format yyMMdd

#replace old format
Get-Content -ReadCount 500 -Path C:\PSFiles\Rec_File_001.txt | % {$_ -replace "(0[1-9]|1[012])\d{1,2}(0[1-9]|[12][0-9]|3[01])", "$CurrentDate"} | Set-Content -Path C:\PSFiles_output\Rec_File_001.txt

这需要使用日期格式Date(mmYYdd)的正则表达式并将其换成新的格式。选项-ReadCount限制了一次通过管道的行数。

答案 1 :(得分:0)

Import-CSV $Path -header text1, text2, text3, date, text5 | 
Select text1, text2, text3, @{Name="Date"; Expression={Get-Date -format yyMMdd}}, text5 |
ConvertTo-Csv -NoTypeInformation |
Select-Object -Skip 1 |
Set-Content $Path

或者:

$data = Import-CSV $Path -header text1, text2, text3, date, text5
$data | ForEach {"Date" = Get-Date -format yyMMdd}
$data | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content $Path

答案 2 :(得分:0)

希望这会有所帮助。在powershell中运行以下命令:

$(Get-Item ath/filename.extensionfilename).creationtime=$(get-date "2019-10-15T15:45:12.2723844+01:00")

$(Get-Item C:\temp\log\txt.log).creationtime=$(get-date "2019-10-15T15:45:12.2723844+01:00")

这是Microsoft的文章,解释了如何修改文件https://devblogs.microsoft.com/scripting/use-powershell-to-modify-file-access-time-stamps/的时间戳

下面是该文章中的表格,显示了涉及您可以修改的时间的属性。

+----------------+----------+-----------------+---------------------------+
|      Name      |  Member  |      Type       |        Definition         |
+----------------+----------+-----------------+---------------------------+
| CreationTime   | Property | System.DateTime | CreationTime {get;set;}   |
| LastAccessTime | Property | System.DateTime | LastAccessTime {get;set;} |
| LastWriteTime  | Property | System.DateTime | LastWriteTime {get;set;}  |
+----------------+----------+-----------------+---------------------------+