2016-02-01 3 views
0

Я попытался изменить дату начала и окончания содержимого файла с помощью сценария PowerShell, но он изменил обе даты на то же самое.Сценарий для изменения двух дат

$path = "H:\oim\adcbsm007\adcbsm007.txt" 
$path = "H:\oim\alps027\alps027.txt" 
$word = "2016,01,28" 
$replacement = "2016,01,29" 
$text = get-content $path 
$newText = $text -replace $word,$replacement 
$newText > $path 
$path = "H:\oim\adcbm007\adcsm007.txt" 
$path = "H:\oim\alps027\alps027.txt" 
$word = "2016,01,29" 
$replacement = "2016,01,30" 
$text = get-content $path 
$newText = $text -replace $word,$replacement 
$newText > $path 

Содержание текстового файла что-то вроде этого:

http://www.google.com="Global History"&customer=guest&password=guest&STARTTIME=2016,01,30,00,00,00&STOPTIME=2016,01,30,00,00,00&POINTSEVERY=15 min&GRAPHTYPE=excel

ответ

1

Вам необходимо заменить дату окончания до даты начала, в противном случае дата начала будет совпадать с датой конца после первая замена. Поэтому вторая замена изменит оба начала и конец даты на новое значение даты окончания. Кроме того, если вы хотите сделать замену в нескольких файлах, вы не можете поместить пути в одну и ту же переменную, чтобы второй путь не заменил первый. Вместо этого используйте список и цикл foreach (или что-то подобное).

$paths = 'H:\oim\adcbsm007\adcbsm007.txt', 'H:\oim\alps027\alps027.txt' 

$startOld = '2016,01,28' 
$startNew = '2016,01,29' 
$endOld = '2016,01,29' # == $startNew 
$endNew = '2016,01,30' 

foreach ($p in $paths) { 
    (Get-Content $p) -replace $endOld, $endNew -replace $startOld, $startNew | 
    Set-Content $p 
} 
Смежные вопросы