|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Использование файла с русскими символами в .bat |
|
CMD/BAT - Использование файла с русскими символами в .bat
|
Новый участник Сообщения: 11 |
Здравствуйте.
Взял два скрипта с этого сайта, для бэкапа 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" ‘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 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:35, 08-06-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать alpap, я вот всё с сомнением смотрю на строки
Цитата vdvas:
|
|
------- Отправлено: 22:59, 08-06-2019 | #3 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать В консоли кракозябы но создаваемые файлы и аппки нормально по русски отображает.
Мне этого достаточно. Кракозябы в консоли не сильно критичны. |
Отправлено: 17:11, 10-06-2019 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать vdvas,
Цитата vdvas:
|
||
------- Отправлено: 21:10, 10-06-2019 | #5 |
Deadooshka Сообщения: 2517
|
Профиль | Отправить PM | Цитировать OpenTextFile по умолчанию ASCII. ANSI видимо -2 (4 параметр)
|
Отправлено: 08:27, 11-06-2019 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sham:
Скрытый текст
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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|