Форум OlegON > Ресурсы OlegON > Вопросы сервера > Архив > УКМ-2

Изменение пути к файлу cashlog.db : УКМ-2

19.03.2024 9:46


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, время: 09:46.

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