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

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

Ответить
Настройки темы
CMD/BAT - Использование файла с русскими символами в .bat

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


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

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


Изменения
Автор: vdvas
Дата: 07-06-2019
Здравствуйте.
Взял два скрипта с этого сайта, для бэкапа revit server.
https://ecognosci.wordpress.com/2014...server-models/
Смысл первого скрипта в том что он записывает в текстовый файл все пути к директориям, обрезает определенное количество первых символов и удаляет пробел. После этого вызывает второй скрипт который использует как аргумент строки из текстового файла.
Ниже мои версии скриптов.
Проблема в том что при вызове команды
"C:\Program Files\Autodesk\Revit Server 2015\Tools\RevitServerToolCommand\revitservertool.exe" createLocalRVT %1 -s server -d %bakdst% -o
появляются кракозябры и ничего не работает.
Сами скрипты имеют кодировку oem 866.
Может надо перекодировать получившийся файл RS2016Projectlist.txt в другую кодировку? Кодировка этого файла ANSI.
listing.bat
Код: Выделить весь код
chcp 1251
set listfile=c:\share\RS2016Projectlist.txt
set backupscript=c:\script\RS2016Backup.cmd
set revitserverprojectpath=D:\Revit Server 2018\Projects
if exist %listfile% del %listfile% /q/f
for /R "%revitserverprojectpath%" %%f in (*.rvt) do (
set tmp=%%~pf
setlocal enableDelayedExpansion

rem The first 49 characters are truncated to remove the absolute path, and the
rem trailing slash is removed.

echo !tmp:~28,-1! >> %listfile%
endlocal
)
rem replace the trailing space
CScript //H:CScript
cscript “replacetext.vbs” “%listfile%” “.rvt ” “.rvt” /I 

rem now parse through Revit model list and run backup script
for /f  "eol=; tokens=* delims=" %%1 in (c:\share\RS2016Projectlist.txt) do c:\share\revit_server_bak.cmd "%%1"
replacetext.vbs
Код: Выделить весь код
‘Replace Text

‘This script should be placed in a folder specified in your system’s PATH variable.

‘Usage (WScript):
‘ReplaceText FileName OldText NewText [/i]

‘ /I (optional) – Text matching is not case sensitive

Set oArgs = WScript.Arguments

intCaseSensitive = 0
For i = 3 to oArgs.Count-1
If UCase(oArgs(i)) = “/I” Then intCaseSensitive = 1
Next

Set oFSO = CreateObject(“Scripting.FileSystemObject”)

If Not oFSO.FileExists(oArgs(0)) Then
WScript.Echo “Specified file does not exist.”
Else
Set oFile = oFSO.OpenTextFile(oArgs(0), 1)
strText = oFile.ReadAll
oFile.Close
strText = Replace(strText, oArgs(1), oArgs(2), 1, -1, intCaseSensitive)

Set oFile = oFSO.OpenTextFile(oArgs(0), 2)
oFile.WriteLine strText
oFile.Close
End If
revit_server_bak.cmd
Код: Выделить весь код
chcp 1251
rem remove quotes fed by parse command and concatenate new UNC target path
set badpath=%1
set rvtroot=%badpath:~1,-1%
set unctarget=\\filesrv\share
set bakdst=”%unctarget%%rvtroot%”
rem use createlocalRVT tool to backup to network location
"C:\Program Files\Autodesk\Revit Server 2015\Tools\RevitServerToolCommand\revitservertool.exe" createLocalRVT %1 -s server -d %bakdst% -o

Отправлено: 22:14, 07-06-2019

 

Ветеран


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

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


Цитата vdvas:
скрипты имеют кодировку oem 866 »
Цитата vdvas:
...Кодировка этого файла ANSI »
а должна быть тоже OEM 866.

Отправлено: 22:35, 08-06-2019 | #2



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

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


alpap, я вот всё с сомнением смотрю на строки
Цитата vdvas:
chcp 1251 »
Старею видать...

-------
Mikhail Zhilin


Отправлено: 22:59, 08-06-2019 | #3


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


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

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


В консоли кракозябы но создаваемые файлы и аппки нормально по русски отображает.
Мне этого достаточно. Кракозябы в консоли не сильно критичны.

Отправлено: 17:11, 10-06-2019 | #4


Ветеран


Contributor


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

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


vdvas,
Цитата vdvas:
c:\share\RS2016Projectlist.txt »
Предоставьте, пожалуйста, этот файл живьем, тыкать пальцем в небо можно долго.

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


Отправлено: 21:10, 10-06-2019 | #5


Deadooshka


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

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


OpenTextFile по умолчанию ASCII. ANSI видимо -2 (4 параметр)

Отправлено: 08:27, 11-06-2019 | #6


Ветеран


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

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


Цитата Sham:
ANSI видимо -2 (4 параметр) »
Нет, ANSI — это как раз «omitted» или же TristateFalse = 0. А TristateUseDefault = -2 даёт достаточно своеобразный эффект. Например:
Скрытый текст
Код: Выделить весь код
Option Explicit

' IOMode Enum
Const ForReading   = 1
Const ForWriting   = 2
Const ForAppending = 8

' Format Enum
Const TristateUseDefault = -2
Const TristateTrue       = -1
Const TristateFalse      =  0


Dim strFile

With WScript.CreateObject("Scripting.FileSystemObject")
	For Each strFile In Array("ANSI-1251.txt", "UTF-16LE-1200.txt", "UTF-16LE-1200 BOM.txt")
		WScript.Echo strFile
		
		With .OpenTextFile(strFile)
			WScript.Echo .ReadAll()
			.Close
		End With
		
		With .OpenTextFile(strFile, ForReading, False, TristateUseDefault)
			WScript.Echo .ReadAll()
			.Close
			WScript.Echo
		End With
	Next
End With

WScript.Quit 0

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

Отправлено: 23:26, 13-06-2019 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Создание bat файла c помощью другого bat файла GODolubOFF Скриптовые языки администрирования Windows 11 03-01-2016 20:30
CMD/BAT - Редактирование текстового файла с нестандартными символами. semcrm Скриптовые языки администрирования Windows 7 03-06-2014 15:15
CMD/BAT - [решено] Изменение файла и его использование в *bat Partiship Скриптовые языки администрирования Windows 14 01-04-2013 18:59
CMD/BAT - Запуск BAT файла с правами локального пользователя из сетевого BAT файла Yurii_L Скриптовые языки администрирования Windows 9 05-09-2012 14:27
CMD/BAT - [решено] Запуск bat-файла от имени админа.Как сделать каталог этого bat-файла текущим?? axmed0207 Скриптовые языки администрирования Windows 1 19-01-2012 06:14




 
Переход