Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Автоматическая смена кодировки .txt файлов

Ветеран


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


Конфигурация

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


Доброе время суток. Нужно написать батник, который бы менял кодировку текстовых файлов с UTF на ANSI. Подскажите пожалуйста как подобное можно реализовать.

Отправлено: 13:28, 29-06-2009

 

Старожил


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

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


__sa__nya,
перекодировать 1.txt в 2.txt , удалить 1.txt , переименовать 2.txt в 1.txt

не подходит ?

Отправлено: 11:09, 02-07-2009 | #11



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

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


Googler


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

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


mitiya, __sa__nya, если в этих файлах удалить первые три псевдосимвола (BOM), RECODE вроде работает... по ходу это наследие никсов... кстати, мануал по утилю: http://www.informatik.uni-hamburg.de...ecode_toc.html

__sa__nya, типа такого?.. с учетом замен двух строчек, как сказал mitiya
Код: Выделить весь код
For /F "Delims=" %%i In ('DIR /B *.txt') Do (
   cscript //Nologo recode.vbs "%%i" "%%~dpn.tmp"
   copy /Y "%%~dpn.tmp" "%%i"
   del "%%~dpn.tmp"
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:15, 02-07-2009 | #12


Ветеран


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

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


amel27, самое оно , вроде работает, сейчас возьму файлов с десяток, буду проверять.
Еще вопрос: чтобы скрипт vbs отрабатывал, какая служба в системе должна быть запущена, он же на что-то опирается?

-------
"Нет" - войне.


Отправлено: 12:46, 02-07-2009 | #13


Googler


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

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


__sa__nya, WSH - это встроенный набор компонент, службы тут не причем:

- для VBS минимум Win2K, но лучше XP/2003 или обновить WSH до версии 5.6;
- для поддержки "ADODB.Stream" минимум XP SP2, иначе накатывать MDAC 2.8

Отправлено: 13:04, 02-07-2009 | #14


Старожил


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

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


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

Отправлено: 02:24, 03-07-2009 | #15


Googler


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

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


mitiya, смысл?.. ИМХО это из разряда извращений, если очень хочется используй AutoIT... в него кста можно запихать и VBS-код

Отправлено: 05:12, 03-07-2009 | #16


Новый участник


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

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


взято из http://forum.oszone.net/post-1156258-6.html

а как выставить принудительно кодировку 866 в получаемом файле в это скрипте?
Код: Выделить весь код
FileIn  = "info.xml"
FileOut = "info.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(FileOut, 2, vbTrue)
strText = FileDecode(FileIn, "utf-8")
objFile.WriteLine(strText)

Function FileDecode (strFile, strCP)
   Set Stream = CreateObject("ADODB.Stream")
   With Stream
     .Type = 2
     .Mode = 3
     .CharSet = strCP
     .Open
     .LoadFromFile(strFile)
   End With
   FileDecode = Stream.Readtext()
   Stream.Close
End Function

-------
Я не программист :(


Отправлено: 01:07, 05-05-2018 | #17


Ветеран


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

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


Цитата anatolysn:
а как выставить принудительно кодировку 866 в получаемом файле в это скрипте? »
WSH: пример конвертации текста из кодировки в кодировку — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум:
Цитата alexii:
Доступные варианты кодировок на компьютере для использования в вышеприведённых скриптах находятся в реестре по адресу HKEY_CLASSES_ROOT\MIME\Database\Charset.
В данном случае сие может выглядеть, например, так:
Код: Выделить весь код
Option Explicit

Const adTypeText            = 2
Const adModeReadWrite       = 3
Const adSaveCreateOverWrite = 2


Dim strSourceFile
Dim strDestFile

Dim strSourceCharset
Dim strDestCharset

Dim objFSO
Dim strContent


strSourceFile = "C:\Мои проекты\0153\0001.xml"
strDestFile   = "C:\Мои проекты\0153\Result.txt"

strSourceCharset = "utf-8"
strDestCharset   = "cp866"


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
	With WScript.CreateObject("ADODB.Stream")
		.Type = adTypeText
		.Mode = adModeReadWrite
		
		.Charset = strSourceCharset
		.Open
		.LoadFromFile strSourceFile
		strContent = .ReadText()
		.Close
		
		.Charset = strDestCharset
		.Open
		.WriteText strContent
		.SaveToFile strDestFile, adSaveCreateOverWrite
		.Close
	End With
Else
	WScript.Echo "Can't find source file [" & strSourceFile & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

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

Отправлено: 02:26, 05-05-2018 | #18


Новый участник


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

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


Код: Выделить весь код
strSourceFile = "C:\test\*.log"
strDestFile   = "C:\test\*.log"
Код: Выделить весь код
strSourceFile = "C:\test\*.log"
strDestFile   = "C:\test\dir2\*.log"
пакетный режим не работает когда нужно все файлы в одной папке с расширением log конвертировать в другую кодировку

на единичный файл работает проверил , гуд

система windows xp sp3

П.С.
Я не программист, ссылки на код не понимаю только юзать умею.

-------
Я не программист :(


Последний раз редактировалось anatolysn, 05-05-2018 в 17:47.


Отправлено: 15:35, 05-05-2018 | #19


Ветеран


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

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


Цитата anatolysn:
пакетный режим не работает »
Странно, да ?

Цитата anatolysn:
нужно все файлы в одной папке с расширением log конвертировать в другую кодировку »
Вот с этого и нужно было начинать.

Код: Выделить весь код
Option Explicit

Dim strSourceFolder
Dim objFile


strSourceFolder = "C:\Мои проекты\0153"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists(strSourceFolder) Then
		For Each objFile In .GetFolder(strSourceFolder).Files
			If StrComp(.GetExtensionName(objFile.Name), "log", vbTextCompare) = 0 Then
				ConvertFile objFile.Path, "utf-8", "cp866"
			End If
		Next
	Else
		WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
		WScript.Quit 1
	End If
End With

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub ConvertFile(strFile, strSourceCharset, strDestCharset)
	Const adTypeText            = 2
	Const adModeReadWrite       = 3
	Const adSaveCreateOverWrite = 2
	
	Dim strContent
	
	With WScript.CreateObject("ADODB.Stream")
		.Type = adTypeText
		.Mode = adModeReadWrite
		
		.Charset = strSourceCharset
		.Open
		.LoadFromFile strFile
		strContent = .ReadText()
		.Close
		
		.Charset = strDestCharset
		.Open
		.WriteText strContent
		.SaveToFile strFile, adSaveCreateOverWrite
		.Close
	End With
End Sub
'=============================================================================
Путь к целевому каталогу и расширение файлов тупо заданы в коде, резервные копии не делаются.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:59, 06-05-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как скопировать содержимое txt файлов всех подкаталогов в один файл dezertic Скриптовые языки администрирования Windows 3 20-10-2009 12:47
CMD/BAT - [решено] Изменение кодировки txt файла из ANSI в UTF-16 LE crashtuak Скриптовые языки администрирования Windows 11 20-08-2009 11:57
[решено] PHP + XSTL | Смена кодировки результирующего файла Coutty Вебмастеру 4 08-12-2008 14:08
Разное - [решено] Превью txt файлов при наведении на него курсора (win XP) 4pok Оформление Windows XP 3 03-12-2008 22:57
Смена кодировки в IRC. zippi Хочу все знать 2 12-07-2006 20:02




 
Переход