Powershell更改文件

时间:2019-01-18 13:32:14

标签: powershell

我在Powershell中是一个非常新的人,希望有人能帮助我:

我在C:\tmp\appFiles.appcache中有一个文件

其中包含:

CACHE MANIFEST
Version: 2019-01-04T00:48:08.3070330+01:00
Use from network if available
NETWORK:

我需要编写一个将日期和时间更改为实际时间的脚本

例如:

CACHE MANIFEST
Version: 2019-01-19T13:55:08.3070330+01:00
Use from network if available
NETWORK:

谢谢您的帮助。

3 个答案:

答案 0 :(得分:1)

或使用Select-String和“往返日期/时间模式” 'o'
参见Standard Date and Time Format Strings

$path    = 'C:\tmp\appFiles.appcache\YOUR-FILENAME'
$content = Get-Content $path
$match   = $content | Select-String -Pattern 'Version:' -SimpleMatch -List
if ($match) {
    $content[$match.LineNumber - 1] = "Version: {0}" -f (Get-Date -Format 'o')
    $content | Set-Content -Path $path
}

答案 1 :(得分:0)

这确实不是脚本编写服务。但是,如果您答应我,您将学到更多有关PowerShell的知识,并开始尝试理解以下脚本,我将为您提供帮助。提示:学习PowerShell时,应使用PowerShell ISE,然后按cntrl + R,这样您就可以更好地编写和理解PowerShell。

$path = "path to your file"
$content = Get-Content $path
$date = Get-Date -Format s
foreach($row in $content){
    if($row -match "Version:"){
        $newContent = $content.replace("$row","Version: $date+01:00")
    }
}
$newContent | Set-Content $path

上面的脚本获取给定文件的内容,然后获取当前日期。然后,它将在内容的每一行中搜索数学文本。找到后,它将用我们创建的自定义行替换该特定行。然后,我们获取新内容并将其设置为我们指定的文件。您基本上是用这种方式覆盖了整个文件!

答案 2 :(得分:0)

  • 要根据给定的格式获得完整的日期字符串,包括部分秒数和UTC偏移量
  • positive lookbehind RegEx替换版本字符串
  • 保存为相同的文件名(需要先读取到内存)

## Q:\Test\2019\01\18\SO_54255102.ps1
$File = 'C:\tmp\appFiles.appcache'

$Date = Get-Date -f 'yyyy-MM-dd\THH:mm:ss.fffffffzzzzz' # or simply (Get-Date -f o)
(Get-Content $File) -Replace '(?<=^Version: ).*$',$Date | Set-Content $File