CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

Anufriev, сделайте копии файла «config.nt», расположенного в папке «system32» Вашей папки «Windows», и файла «config.fp», расположенного в папке с приложением.



Затем поменяйте в обоих вышеупомянутых файлах строку:



Код:

Код: Выделить всё

FILES=40

на:



Код:

Код: Выделить всё

FILES=200

Перезагрузите машину (на всякий случай, я не помню, требуется ли сие реально) и попробуйте обновить — появится ли вновь ошибка «Too many fies open»?
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

Цитата Anufriev:





Код:

Код: Выделить всё

taskkill /IM ntvdm.exe

CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe




Боюсь, рано или поздно, принудительные снятия процесса, работающего с *.dbf-базами, аукнутся.
Аватара пользователя
Iska

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Iska »

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



конечно можно поискать вариант с более щедящим завершением работ ПО



и не понадобилось стороннее ПО, что очень радует.

Получился вод такой код





Код:

Код: Выделить всё

@Echo Off
rem Пути
Set ReadPath=C:\INFO
Set GetPath=C:\biki\get
Set ARJPath=C:\BNK\IZM
rem Таймаут проверки файлов, в секундах
Set Timeout=10
Set /A Timeout+=1
If Not Exist "%ReadPath%" Echo Error - Directory not found&Exit /B 1
rem Подготавливаем структуру директорий
If Not Exist "%GetPath%" MD "%GetPath%"
:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\read*.*" /B') Do (
    Set NFOName=%%F
rem Поиск в найденном строки с архивом 
    For /F "delims=" %%S In ('Findstr /R /I /C:"\" "%ReadPath%\%%F"') Do (
rem Разбор строки на составляющие, вычленение имени архива
        For %%A In (%%S) Do (
            Echo %%A|Find /I "arj">nul&&Set ARJName=%%A
        )
    )
)
If Defined ARJName (
    Echo Found %NFOName%, processing...
rem Создаем get-файл
    Echo get mfo %ARJName%>"%GetPath%\get.txt"
rem Перемещаем обработанный файл, чтобы исключить повторное прочтение
rem Если в системе установлен другой формат даты - исправить.
    For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
        If Not Exist "%ReadPath%\%%C.%%B.%%A" MD "%ReadPath%\%%C.%%B.%%A"
        Move "%ReadPath%\%NFOName%" "%ReadPath%\%%C.%%B.%%A\%NFOName%"
    )
:WaitForARJ
rem Распаковка архива, или ожидание, если он ещё не появился
    If Exist "%ARJPath%\%ARJName%" (
        c:\arj\ARJ32.EXE e C:\BNK\IZM\*.arj C:\BNK\IZM\
        Echo Archive %ARJName% successfuly extracted
rem Запускаем программу
Start "" "C:\BNK\01RKC#.EXE"
Ping -n 10 127.0.0.1>nul
taskkill /IM ntvdm.exe
start C:\DAT.vbs
    ) Else (
        Echo Waiting for ARJ in %ARJPath%
        Ping -n %Timeout% 127.0.0.1>nul
        GoTo WaitForARJ
    )
)
rem Уход на новую итерацию после таймаута
Cls&Echo Scanning %ReadPath%...
Ping -n %Timeout% 127.0.0.1>nul
GoTo Loop

p.s. думаю теперь лучше скрипт vbs переделать на bat и вообще красота будет, простите Iska, лишний скриптик писалиИзображение(хотя он не лишний, очень хороший, и выручал пока не разобрались с батником), подскажете как его на bat переделать, ну и дописать в тот общий батник





Код:

Код: Выделить всё

Option Explicit
Dim dtCurrDate
Dim strFormattingDate
dtCurrDate = Now()
strFormattingDate = Right("0000" & Year(dtCurrDate), 4) & "." & Right("00" & Month(dtCurrDate), 2) & "." & Right("00" & Day(dtCurrDate), 2)
With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists("Y:\DAT") Then
		If .FolderExists("C:\bnk") Then
			If Not .FolderExists("Y:\" & strFormattingDate) Then
				.GetFolder("Y:\DAT").Name = strFormattingDate
				.CopyFolder "C:\bnk\DAT", "Y:\DAT", True
			Else
				WScript.Echo "Folder [Y:\" & strFormattingDate & "] already exists"
			End If
		Else
			WScript.Echo "Folder [C:\bnk] not found"
		End If
	Else
		WScript.Echo "Folder [Y:\DAT] not found"
	End If
End With
WScript.Quit 0
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

Переделал.



Код:

Код: Выделить всё

For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
    If Not Exist "D:\%%C.%%B.%%A" (
        Ren "D:\DAT" "%%C.%%B.%%A" 2>nul||MD "D:\%%C.%%B.%%A"
        Xcopy "C:\BNK\DAT" "D:\DAT" /E /I /Y /Q
    )
)

Это ежедневный бэкап баз? В каком месте основного скрипта он должен вызываться?
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

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

конечно можно поискать вариант с более щедящим завершением работ ПО

и не понадобилось стороннее ПО, что очень радует.

Получился вод такой код

Код:

Код: Выделить всё

@Echo Off
rem Пути
Set ReadPath=C:\INFO
Set GetPath=C:\biki\get
Set ARJPath=C:\BNK\IZM
rem Таймаут проверки файлов, в секундах
Set Timeout=10
Set /A Timeout+=1
If Not Exist "%ReadPath%" Echo Error - Directory not found&Exit /B 1
rem Подготавливаем структуру директорий
If Not Exist "%GetPath%" MD "%GetPath%"
:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\read*.*" /B') Do (
    Set NFOName=%%F
rem Поиск в найденном строки с архивом 
    For /F "delims=" %%S In ('Findstr /R /I /C:"\" "%ReadPath%\%%F"') Do (
rem Разбор строки на составляющие, вычленение имени архива
        For %%A In (%%S) Do (
            Echo %%A|Find /I "arj">nul&&Set ARJName=%%A
        )
    )
)
If Defined ARJName (
    Echo Found %NFOName%, processing...
rem Создаем get-файл
    Echo get mfo %ARJName%>"%GetPath%\get.txt"
rem Перемещаем обработанный файл, чтобы исключить повторное прочтение
rem Если в системе установлен другой формат даты - исправить.
    For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
        If Not Exist "%ReadPath%\%%C.%%B.%%A" MD "%ReadPath%\%%C.%%B.%%A"
        Move "%ReadPath%\%NFOName%" "%ReadPath%\%%C.%%B.%%A\%NFOName%"
    )
:WaitForARJ
rem Распаковка архива, или ожидание, если он ещё не появился
    If Exist "%ARJPath%\%ARJName%" (
        c:\arj\ARJ32.EXE e C:\BNK\IZM\*.arj C:\BNK\IZM\
        Echo Archive %ARJName% successfuly extracted
rem Запускаем программу
Start "" "C:\BNK\01RKC#.EXE"
Ping -n 10 127.0.0.1>nul
taskkill /IM ntvdm.exe
start C:\DAT.vbs
    ) Else (
        Echo Waiting for ARJ in %ARJPath%
        Ping -n %Timeout% 127.0.0.1>nul
        GoTo WaitForARJ
    )
)
rem Уход на новую итерацию после таймаута
Cls&Echo Scanning %ReadPath%...
Ping -n %Timeout% 127.0.0.1>nul
GoTo Loop

p.s. думаю теперь лучше скрипт vbs переделать на bat и вообще красота будет, простите Iska, лишний скриптик писалиИзображение(хотя он не лишний, очень хороший, и выручал пока не разобрались с батником), подскажете как его на bat переделать, ну и дописать в тот общий батник

Код:

Код: Выделить всё

Option Explicit
Dim dtCurrDate
Dim strFormattingDate
dtCurrDate = Now()
strFormattingDate = Right("0000" & Year(dtCurrDate), 4) & "." & Right("00" & Month(dtCurrDate), 2) & "." & Right("00" & Day(dtCurrDate), 2)
With WScript.CreateObject("Scripting.FileSystemObject")
	If .FolderExists("Y:\DAT") Then
		If .FolderExists("C:\bnk") Then
			If Not .FolderExists("Y:\" & strFormattingDate) Then
				.GetFolder("Y:\DAT").Name = strFormattingDate
				.CopyFolder "C:\bnk\DAT", "Y:\DAT", True
			Else
				WScript.Echo "Folder [Y:\" & strFormattingDate & "] already exists"
			End If
		Else
			WScript.Echo "Folder [C:\bnk] not found"
		End If
	Else
		WScript.Echo "Folder [Y:\DAT] not found"
	End If
End With
WScript.Quit 0
Аватара пользователя
Guest

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Guest »

Переделал.



Код:

Код: Выделить всё

For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
    If Not Exist "D:\%%C.%%B.%%A" (
        Ren "D:\DAT" "%%C.%%B.%%A" 2>nul||MD "D:\%%C.%%B.%%A"
        Xcopy "C:\BNK\DAT" "D:\DAT" /E /I /Y /Q
    )
)

Это ежедневный бэкап баз? В каком месте основного скрипта он должен вызываться?
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

Цитата Anufriev:



возможно ли по завершению батника отправить сообщение не определенный ПК?
CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe




Лучше:



Код:

Код: Выделить всё

msg.exe /server:…
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

Anufriev, попробуйте net send (net send /? для синтаксиса) или
заменитель
.





Код:

Код: Выделить всё

@Echo Off
rem Пути
Set ReadPath=C:\INFO
Set GetPath=C:\biki\get
Set ARJPath=C:\BNK\IZM
rem Таймаут проверки файлов, в секундах
Set Timeout=10
Set /A Timeout+=1
If Not Exist "%ReadPath%" Echo Error - Directory not found&Exit /B 1
rem Подготавливаем структуру директорий
If Not Exist "%GetPath%" MD "%GetPath%"
:Loop
Set ARJName=&Set NFOName=
rem Поиск файла
For /F "delims=" %%F In ('Dir "%ReadPath%\read*.*" /B') Do (
    Set NFOName=%%F
rem Поиск в найденном строки с архивом 
    For /F "delims=" %%S In ('Findstr /R /I /C:"\" "%ReadPath%\%%F"') Do (
rem Разбор строки на составляющие, вычленение имени архива
        For %%A In (%%S) Do (
            Echo %%A|Find /I "arj">nul&&Set ARJName=%%A
        )
    )
)
If Defined ARJName (
    Echo Found %NFOName%, processing...
rem Создаем get-файл
    Echo get mfo %ARJName%>"%GetPath%\get.txt"
rem Перемещаем обработанный файл, чтобы исключить повторное прочтение
rem Если в системе установлен другой формат даты - исправить.
    For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
        If Not Exist "%ReadPath%\%%C.%%B.%%A" MD "%ReadPath%\%%C.%%B.%%A"
        Move "%ReadPath%\%NFOName%" "%ReadPath%\%%C.%%B.%%A\%NFOName%"
    )
:WaitForARJ
rem Распаковка архива, или ожидание, если он ещё не появился
    If Exist "%ARJPath%\%ARJName%" (
        c:\arj\ARJ32.EXE e C:\BNK\IZM\*.arj C:\BNK\IZM\
        Echo Archive %ARJName% successfuly extracted
rem Запускаем программу
        Start "" "C:\BNK\01RKC#.EXE"
        Ping -n 10 127.0.0.1>nul
        taskkill /IM ntvdm.exe
rem Делаем бэкап баз
        For /F "tokens=1,2,3 delims=." %%A In ("%Date%") Do (
            If Not Exist "D:\%%C.%%B.%%A" (
                Ren "D:\DAT" "%%C.%%B.%%A" 2>nul||MD "D:\%%C.%%B.%%A"
                Xcopy "C:\BNK\DAT" "D:\DAT" /E /I /Y /Q
            )
        )
rem Отсылаем уведомление
        Net send ADMIN "Created backup D:\%%C.%%B.%%A"
    ) Else (
        Echo Waiting for ARJ in %ARJPath%
        Ping -n %Timeout% 127.0.0.1>nul
        GoTo WaitForARJ
    )
)
rem Уход на новую итерацию после таймаута
Cls&Echo Scanning %ReadPath%...
Ping -n %Timeout% 127.0.0.1>nul
GoTo Loop
Аватара пользователя
Anufriev

Re: CMD/BAT - автоматическое обновление справочников Биков ПО 01RKC#.exe

Сообщение Anufriev »

net send в win7 не имеется, стороннее ПО ставить не хочется

вопрос а как работает msg, сам себе получается отправить на другой ПК не удается "Ошибка 1722 при получении имен сеанса"



необходимо в реестре изменить HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\AllowRemoteRPC=1
Ответить

Вернуться в «Скриптовые языки администрирования Windows»