Powershell 替换 cron 计划中的第二项?
Powershell replacing 2nd item in cron schedule?
我确定我要离开这里了,可能有更简单的方法来做到这一点,但我必须更改一些 cron 文本计划并更改它们 运行..
cron 本身在一个文本文件中,所以我正在考虑使用 powershell 来获取内容、更新它并保存它..但是我不太擅长使用正则表达式等。 -我已经从互联网资源中拼凑了一些东西,但仍然有些缺失....
我可以抓取文件内容和写入等,只是第二个变量的更高级替换才是问题....
这是我的代码:
$testText = "cron(0 20 * * ? *)"
$pattern = '(\().+?(\))'
$new1 = [regex]::Matches($testText, $pattern).Value
"new1 $new1"
$new2 = $($new1 -replace '\s+', ' ').split()
"new2 $new2"
$new3 = $new2[1]-1 #Set back an hour
#$new3 = $new2[1] -replace $new2[1],"22" #Specify Hour
"new3 $new3"
$new4 = $testText -Replace($new2,$new3)
"new4 $new4"
这导致了这个输出——恼人的是第一位被敲掉了..
new1 (0 20 * * ? *)
new2 (0 20 * * ? *)
new3 19
new4 cron(19* * ? *)
我使用空格将其拆分为括号后的第一项,括号可以是 1 位或 2 位数字,在第二组字符(小时)之后,这些也可以不同.. 即 cron(30 06 ? *周一至周五 *)
如有任何帮助,我们将不胜感激...-这是漫长的一天,我的大脑非常疲倦!!
$testText = "cron(0 20 * * ? *)"
$cron = $testText.split(' ').split('(').split(')')
'cron(' +
$cron[1] + ' ' +
(([datetime]::Today).AddHours($cron[2] -1).Hour) + ' ' +
$cron[3] + ' ' +
$cron[4] + ' ' +
$cron[5] + ' ' +
$cron[6] +
')'
或者更简单一些
$testText = "cron(0 20 * * ? *)"
$cron = $testText.split(' ').split('(').split(')')
$cron[2] = ([datetime]::Today).AddHours($cron[2]-1).Hour
'cron(' + ($cron -join ' ') + ')'
我确定我要离开这里了,可能有更简单的方法来做到这一点,但我必须更改一些 cron 文本计划并更改它们 运行..
cron 本身在一个文本文件中,所以我正在考虑使用 powershell 来获取内容、更新它并保存它..但是我不太擅长使用正则表达式等。 -我已经从互联网资源中拼凑了一些东西,但仍然有些缺失....
我可以抓取文件内容和写入等,只是第二个变量的更高级替换才是问题....
这是我的代码:
$testText = "cron(0 20 * * ? *)"
$pattern = '(\().+?(\))'
$new1 = [regex]::Matches($testText, $pattern).Value
"new1 $new1"
$new2 = $($new1 -replace '\s+', ' ').split()
"new2 $new2"
$new3 = $new2[1]-1 #Set back an hour
#$new3 = $new2[1] -replace $new2[1],"22" #Specify Hour
"new3 $new3"
$new4 = $testText -Replace($new2,$new3)
"new4 $new4"
这导致了这个输出——恼人的是第一位被敲掉了..
new1 (0 20 * * ? *)
new2 (0 20 * * ? *)
new3 19
new4 cron(19* * ? *)
我使用空格将其拆分为括号后的第一项,括号可以是 1 位或 2 位数字,在第二组字符(小时)之后,这些也可以不同.. 即 cron(30 06 ? *周一至周五 *)
如有任何帮助,我们将不胜感激...-这是漫长的一天,我的大脑非常疲倦!!
$testText = "cron(0 20 * * ? *)"
$cron = $testText.split(' ').split('(').split(')')
'cron(' +
$cron[1] + ' ' +
(([datetime]::Today).AddHours($cron[2] -1).Hour) + ' ' +
$cron[3] + ' ' +
$cron[4] + ' ' +
$cron[5] + ' ' +
$cron[6] +
')'
或者更简单一些
$testText = "cron(0 20 * * ? *)"
$cron = $testText.split(' ').split('(').split(')')
$cron[2] = ([datetime]::Today).AddHours($cron[2]-1).Hour
'cron(' + ($cron -join ' ') + ')'