[ОТВЕТИТЬ]
03.07.2009 11:51
HellBoy
 
Всем доброго времени суток. Подскажите пожалуйста, где можно прописать путь к хранению файла cashlog.db, чтоб не в database а в другом месте, например на сетевом диске N. Есть в cf_ini какой параметр, отвечающий за это?
03.07.2009 12:03
akonev
 
не помню такого.

но сразу можно сказать, что на сетевой диск журнал нельзя писать.
сеть глюкнет - и журнала не будет и касса начнет, как минимум, тормозить на каждый чих.
03.07.2009 12:11
HellBoy
 
Хорошо, а можно как-то в DOSe дописывать файлы формата db? Чтоб, например, на сетевом диске хранить журнал, получаемый из сменных кусков. Т.е. на сетевом диске имеем файл Cashlog.db, в конце смены, при выключении кассы, дописываем в него лог за текущую смену и удаляем локальный файл. В новой смене он снова создается и в конце снова его дописываем к основному в сети?
03.07.2009 12:16
akonev
 
в самом досе - нельзя. придется софтинку писать.
например, на трубо-паскакале с парадокс-энжином.
03.07.2009 12:19
konst
 
У нас реализовано по-другому
каждое утро (при первом запуске кассы)
на сервер выкладывается этот файл и при этом переименовывается
в виде ГГГГММДД
03.07.2009 12:27
HellBoy
 
konst, а как вы переименовываете, в ручную или программно? а то в DOSe нет команды %date%.
03.07.2009 12:28
akonev
 
очевидный вариант. рабочий.
но я так понимаю, человек собрался их как-то анализировать.
для этого удобнее, чтобы было одним файлом. хотя и не обязательно, конечно.
03.07.2009 12:36
HellBoy
 
Я так по началу и хотел, но незнаю как переименовывать файл под текущую дату без %date%. С ней-то не вопрос, а вот без?
03.07.2009 13:10
Vovantus
 
Цитата:
HellBoy Я так по началу и хотел, но незнаю как переименовывать файл под текущую дату без %date%. С ней-то не вопрос, а вот без?
А зачем его вообще переименовывать? Делай каждый день копирование с замещением. Переодически удаляй файл cashlog.db с кассы, что бы не распухал до больших размеров.
03.07.2009 15:15
akonev
 
было бы желание. можно и %date% сделать.
Код:
@echo off
echo @PROMPT SET DATE=$D$_> tmp.bat
command.com /c tmp.bat>tmp2.bat
echo e111' '>tmp.bat
echo e114' '>>tmp.bat
echo w>>tmp.bat
echo q>>tmp.bat
debug.exe tmp2.bat <tmp.bat >nul
call tmp2.bat
echo SET DATE=%%4_%%3_%%2 >tmp.bat
echo SET DAY=%%1 >>tmp.bat
echo SET DD=%%2 >>tmp.bat
echo SET MM=%%3 >>tmp.bat
echo SET YYYY=%%4 >>tmp.bat
call tmp.bat %date%
как-то так.
предполагается, что c:\dos\debug.exe никто не удалял
07.07.2009 07:15
HellBoy
 
Уважаемый Andrew_Konev, а куда это дописать, в отдельный батник с последующим вызовом в autoexec? Попробовал, не показывает дату по вызову %date%.
07.07.2009 17:58
akonev
 
мммм.... получится длинно. извиняйте, по другому никак.

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

попробуй в конец моего батника дописать
Код:
echo %date%
echo %dd%
echo %mm%
echo %yyyy%
echo %day%
pause
должен показать получившиеся переменные (дата, день, месяц, год, день недели) и остановиться

если показывает что-то неправдоподобное - выложи сюда получившиеся tmp.bat и tmp2.bat
возможно, или я некорректно написал сюда или ты скопровал отсюда. там кое-где критично наличие пробелов.
или, быть может, у тебя какие-то другие региональные настройки и debug'ом надо втыкать разделители в другие места.

НО! лучше всего будет, если ты разберешься в сути этого батника.

единственное место, куда DOS умеет сама вставлять дату - это системное приглашение
первой командой мы делаем временный батник для включения в приглашение текста SET, системной даты и перевода строки
Код:
echo @PROMPT SET DATE=$D$_> tmp.bat
этот временный батник выполняем в отдельной копии command.com, чтобы приглашение "портилось" только для этой копии
Код:
command.com /c tmp.bat>tmp2.bat
на выходе мы получаем второй временный батник, в котором уже есть команда SET DATE и реальное значение даты.
только вот оно в таком виде, что использовать его не удобно. поэтому прежде, чем его выполнять, разделители в значении даты заменяются на пробелы. для этого формируется файлик команд для debug.exe
поскольку tmp.bat нам уже больше не нужен (он уже отработался), то именно он для этого и используется.
Код:
echo e111' '>tmp.bat
echo e114' '>>tmp.bat
echo w>>tmp.bat
echo q>>tmp.bat
первые две команды втыкают пробелы вместо разделителей даты по адресам 111 и 114, третья - запись, четвертая - выход.
дальше вызывается debug.exe и ему на вход подаются эти команды
Код:
debug.exe tmp2.bat <tmp.bat >nul
исправленный tmp2 состоит из команды SET и текущей даты, разделенной пробелами на день недели, день, месяц, год
Код:
call tmp2.bat
теперь мы, наконец, получили переменную %DATE%, но она все еще состоит из этих четырех частей, разделенных пробелами.
поэтому опять переделываем tmp.bat, чтобы он из этих четырех частей собрал нужные переменные.
Код:
echo SET DATE=%%4_%%3_%%2 >tmp.bat
echo SET DAY=%%1 >>tmp.bat
echo SET DD=%%2 >>tmp.bat
echo SET MM=%%3 >>tmp.bat
echo SET YYYY=%%4 >>tmp.bat
на вход мы ему подадим нашу "недоделанную" %DATE% (call tmp.bat %date%).
поскольку отдельные части %DATE% на этот момент разделены пробелами, то батник понимает эти части, как четыре отдельных параметра и разложит их по новым переменным.

чтобы отладить эту ботву, надо начинать писать батник сверху вниз по несколько строк, как я их разделил сейчас при описании.
после каждого добавления запускать и смотреть, что стало с tmp.bat и tmp2.bat
одно скажу сразу: эта фигня придумана много лет назад и нормально работала (и работает) у самых разных людей на огромном количестве систем. все-таки, DOS'у не один десяток лет и проблема отсутствия переменной типа %DATE% мешала очень многим.
Опции темы


Часовой пояс GMT +3, время: 15:06.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.