Показать полную графическую версию : [решено] Как убрать ASCII-символ из файла?
Есть файл вот такого вида: во вложении.
Нужно убрать из него все символы с ASCII-кодом 013 (обведен красным).
Пытаюсь сделать это вот таким кодом:
Set NFile2 = FSO.OpenTextFile("D:\30.10.ptr", 1, True)
arrTemp = Split(NFile2.ReadAll, vbNewLine)
Nfile2.Close
For i = 0 To UBound(arrTemp)
arrTemp(i) = Replace(arrTemp(i), Chr(013), "")
Next
Set NFile2 = FSO.CreateTextFile("D:\30.10.ptr", True)
NFile2.Write Join(arrTemp, vbNewLine)
NFile2.Close
Set NFile2 = Nothing
Почему не убирает??
Хотя если поставить ASCII-код символа, например, 036 ($) - то все прекрасно убирает.
Есть файл вот такого вида: во вложении. »
Во вложении должен быть сам файл, упакованный в архив, а не картинка.
Iska, Прикрепил.
Картинка для наглядности, что нужно удалять.
Если Вам нужно заменить последовательность концов строк с формата Windows (CrLf) на Unix (Lf), то можете попробовать так (не проверялось):
Option Explicit
Dim strSourceFile
Dim arrContent
strSourceFile = "D:\30.10.ptr"
With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strSourceFile) Then
With .OpenTextFile(strSourceFile)
arrContent = Split(.ReadAll(), vbCrLf)
.Close
End With
With .CreateTextFile(strSourceFile, True)
.Write Join(arrContent, vbLf)
.Close
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If
End With
WScript.Quit 0
Iska, спасибо, работает. А подскажите еще плз, как мне убрать в конце файла символ 0x01A?
glukin, а Вы уверены, что его нужно убирать? Это обычный «End-of-file», во времена оны требовался для завершения любого текстового файла (впрочем, и сейчас можете его опробовать его использование — ввести в консоль командной строки «copy con: SomeFile.txt», что-нибудь понабирать, периодически нажимая Enter, и завершить ввод, нажатием Ctrl-Z — тот самый «End-of-file», затем Enter). Хотя, да — нынче практически не встречается в природе.
Самое простое — тупо сделать замену. Поменяйте запись в файл на такую строку:
.Write Replace(Join(arrContent, vbLf), Chr(26), "")
glukin, а Вы уверены, что его нужно убирать? »
Да, named с ним не стартует, удаляю его руками - все ОК.
megaloman
24-03-2017, 10:19
Iska, File_In = "Z:\Box_Arc\30.10.ptr" ' Исходный файл
File_Out = "Z:\Box_Arc\30.10.mod.ptr" ' Обработанный файл (может совпадать с исходным)
DelSym = Array(13, &H1A) ' Коды символов удаляемых из текста
N1 = LBound(DelSym)
N2 = UBound(DelSym)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set NFile = FSO.OpenTextFile(File_In, 1, False)
S = NFile.ReadAll
NFile.Close
For i = N1 To N2
S = Replace(S, Chr(DelSym(i)), "")
Next
Set NFile = FSO.OpenTextFile(File_Out, 2, True)
NFile.Write S
NFile.Close
Почему надо читать исходный файл в массив, почему нельзя его прочесть в строку и сделать replace ? »
Можно и так, разумеется. Я, правда, предпочитаю, где можно, работать с массивами по for each … in.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.