Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как убрать ASCII-символ из файла?

Ответить
Настройки темы
VBS/WSH/JS - [решено] Как убрать ASCII-символ из файла?

Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg untitled.JPG
(59.2 Kb, 17 просмотров)
Есть файл вот такого вида: во вложении.
Нужно убрать из него все символы с 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 ($) - то все прекрасно убирает.

Отправлено: 23:50, 23-03-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата glukin:
Есть файл вот такого вида: во вложении. »
Во вложении должен быть сам файл, упакованный в архив, а не картинка.

Отправлено: 00:03, 24-03-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip 30.10.zip
(876 байт, 17 просмотров)

Iska, Прикрепил.
Картинка для наглядности, что нужно удалять.

Отправлено: 00:11, 24-03-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Если Вам нужно заменить последовательность концов строк с формата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:11, 24-03-2017 | #4


Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Iska, спасибо, работает. А подскажите еще плз, как мне убрать в конце файла символ 0x01A?

Отправлено: 07:50, 24-03-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


glukin, а Вы уверены, что его нужно убирать? Это обычный «End-of-file», во времена оны требовался для завершения любого текстового файла (впрочем, и сейчас можете его опробовать его использование — ввести в консоль командной строки «copy con: SomeFile.txt», что-нибудь понабирать, периодически нажимая Enter, и завершить ввод, нажатием Ctrl-Z — тот самый «End-of-file», затем Enter). Хотя, да — нынче практически не встречается в природе.

Самое простое — тупо сделать замену. Поменяйте запись в файл на такую строку:
Код: Выделить весь код
			.Write Replace(Join(arrContent, vbLf), Chr(26), "")
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:32, 24-03-2017 | #6


Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата Iska:
glukin, а Вы уверены, что его нужно убирать? »
Да, named с ним не стартует, удаляю его руками - все ОК.

Отправлено: 09:29, 24-03-2017 | #7


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Iska,
Почему надо читать исходный файл в массив, почему нельзя его прочесть в строку и сделать replace ?
Код: Выделить весь код
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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-03-2017 в 10:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:19, 24-03-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Почему надо читать исходный файл в массив, почему нельзя его прочесть в строку и сделать replace ? »
Можно и так, разумеется. Я, правда, предпочитаю, где можно, работать с массивами по for each … in.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:23, 24-03-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как убрать ASCII-символ из файла?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD - читаю из файла, если первый символ строки =*, то вывести на экран строку jester7 Скриптовые языки администрирования Windows 16 11-04-2022 13:52
Как вставить управляющий символ Unicode в имя файла. SANIOK_AV Хочу все знать 19 10-11-2012 09:15
CMD/BAT - [решено] Как из имени файла убрать 11 символов cdp75 Скриптовые языки администрирования Windows 3 26-04-2012 06:07
CMD/BAT - [решено] как из bat файла дописать символ в текстовый файл? idzs Скриптовые языки администрирования Windows 6 22-02-2011 03:49
Мультимедиа - Как убрать лицензию из WMV-файла? Guest Программное обеспечение Windows 34 26-07-2008 18:47




 
Переход