vdvas
07-06-2019, 22:14
Здравствуйте.
Взял два скрипта с этого сайта, для бэкапа revit server.
https://ecognosci.wordpress.com/2014/12/30/a-practical-guide-to-backing-up-revit-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
Взял два скрипта с этого сайта, для бэкапа revit server.
https://ecognosci.wordpress.com/2014/12/30/a-practical-guide-to-backing-up-revit-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