Sa 21.Feb.2015 00:07 ERROR # 3: f:\user\a.user\Documents\очень\длинный\путь\или\символы \в\нечитаемой\кодировке\документ.doc ==> \\BACKUP\5\user\a.user\Documents\очень\длинный\путь\или\символы \в\нечитаемой\кодировке\документ.doc: Системе не удается найти указанный путь.
Нужно создать по каждому пользователю файл со списком каталогов и файлов, которые им нужно переименовать или укоротить путь.
Для этого разобьём на массив с разделителем слэш \ ,укоротим до символа ==>. Выбирать будем по кодам ошибок "ERROR # 3:"
$path = "c:\path\"
$log = Get-Content backup.log
# очищаем от ранее созданных файлов
Remove-Item -Path ($path + '*')
for($i=0;$i -lt $log.count;$i++) {
If(($log[$i] -match " ERROR # 3:") -Or ($log[$i] -match " ERROR # 123:")){
$value = @()
$tmp = $log[$i].split("\")
If($tmp[3] -match "Documents"){
for($ii=3;$ii -lt $tmp.count;$ii++) { If($tmp[$ii] -match "==>") {
# Вырезаем ==>
$value += $tmp[$ii].Substring(0, ($tmp[$ii].length - 4))
# Заново собираем
$value = $value -join '\'
# Вырезаем в конце слэш \
$value = $value.Substring(0, ($value.length - 1))
# Добавляем переход на новую строку
$value += "`n"
break
}
Else{
$value += $tmp[$ii]
}
}
# создаем файл по логину пользователя $tmp[2].ToString()
Add-Content -Path ($path + $tmp[2].ToString() + '.txt') -Value $value }
}
}
Комментариев нет:
Отправить комментарий