Показать полную графическую версию : [решено] Замена строки в файлах
Имеется куча файлов *.tab в папке, нужно в каждом файле заменить 11-ю строку
CoordSys NonEarth Units "m"
на
CoordSys Earth Projection 8, 1001, "m", 61.0333333333002, 0, 1, 2300000, -5509414.7
Имеется куча файлов *.tab в папке »
Несколько образцов из этой кучи упакуйте в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.
Несколько образцов из этой кучи »
Он раз в пол-года задаёт этот вопрос на разных форумах (http://www.cyberforum.ru/powershell/thread1852197.html), а потом исчезает. Не стоит ждать ответа.
Да и без образцов вроде бы всё понятно - что вы хотите там увидеть?
Да и без образцов вроде бы всё понятно - что вы хотите там увидеть? »
Я лично хочу увидеть:
используемую кодировку;
наличие BOM;
тип конца строк;
что приведённая строка именно одиннадцатая и именно с таким содержимым содержится во всех примерах.
Наконец, это избавит отвечающего от необходимости самолично изготавливать примеры файлов для проверки работоспособности кода.
Он раз в пол-года задаёт этот вопрос на разных форумах, а потом исчезает. »
Вот токмо там фигурирует двенадцатая строка :).
Он раз в пол-года задаёт этот вопрос на разных форумах, а потом исчезает. Не стоит ждать ответа. »
Ну а чего там делать если ответа не дождался
упакуйте в архив »
https://drive.google.com/open?id=0B1qO9ypZT10bSnFNLXRrc2h1aTg
#File.WriteAllText - This method uses UTF-8 encoding without a Byte-Order Mark (BOM), so using the GetPreamble method will return an empty byte array.
$o = 'CoordSys NonEarth Units "m"'
$n = 'CoordSys Earth Projection 8, 1001, "m", 61.0333333333002, 0, 1, 2300000, -5509414.7'
dir C:\*.tab | Foreach {
$f = Get-Content $_.FullName
if($f[11].Contains($o)) {
$f[11] = $n
[IO.File]::WriteAllLines($_.FullName, $f)
}
}
if($f[11].Contains($o)) { »
Почему не сразу на равенство?
Подумалось о доп. символах с начала и в конце строки, но равенство будет более точно.
Подумалось о доп. символах с начала и в конце строки »
Спасибо, ясно. Я, в принципе, так и предполагал.
Iska, видите как всё прекрасно: можно не строить предположения о требованиях к кодировке, а просто задокументировать формат:#File.WriteAllText - This method uses UTF-8 encoding without a Byte-Order Mark (BOM), so using the GetPreamble method will return an empty byte array.
Busla, какое отношение процитированное умолчание имеет к изложенному мною?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.