Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Создание системных файлов


Рекомендуемые сообщения

Вот задали сделать курсовую :) надо написать системный файл ;) может кто подскажет где можно почитать по этому поводу <_< или подскажите как можно вывести полное название дня недели :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

Э-э-э... :rolleyes: А можно слегка поподробнее? Что значит "написать системный файл" в терминологии твоей курсовой? И куда и с помощью чего надо вывести полное название дня недели?

Ссылка на комментарий
Поделиться на другие сайты

Tas'ka

надо написать системный файл
Действительно, непонятно. Если только это, нет проблем. Создаем текстовый файл с любым содержанием или без такового, называем MSDOS.SYS и имеем системный файл MS-DOS. Своим наличием служит для совместимости со старыми программами. Содержание в последних версиях MS-DOS не используется и значения не имеет :rolleyes:
Ссылка на комментарий
Поделиться на другие сайты

Tas'ka

Что почитать? Выбираешь в меню Windows пункт Run, набираешь hh ntcmds.chm и читаешь справку по командам.

Вот насчет вывода полного названия дня недели не совсем понятно. Рассчитать его и, скажем, в Бейсике не очень просто, хотя там я бы это сделал, а вот в командном интерпретаторе получить составляющие даты, по ним рассчитать номер дня недели и вывести соответствующее слово - имхо, нет там для первых двух подзадач таких средств.

Лучше уточни все-таки, что именно тебе было задано. Просто командный файл - пожалуйста: строка @echo Hello! выводит, например, строку Hello! , вот уже простейший командный файл.

Ссылка на комментарий
Поделиться на другие сайты

Тролль

Ну, если *.cmd, то ось - NT или OS/2, скорее всего NT. :)

А там система команд более продвинутая...

В любом случае:

D:\>date <nulТекущая дата: Пт 09.04.2004

И если "Пт" - это пятница... :) то...

с уважением.

Ссылка на комментарий
Поделиться на другие сайты

извиняюсь.

Tas'ka

имхо, так.

сам обязательно! разберись с кодом и допиши для остальных дней.

учти, кириллица должна быть ср866

Неплохо бы предварительно проверять наличие %temp%\temp.tmp

если есть такой - использовать temp1(2, 345...).tmp

(инкремент - с помощью команды SET /A, например)

Почитать - есть толковая книжка:

Андрей Попов, "Командные файлы и сценарии WSH"

REM weekday.cmd@ECHO OFFDATE > %temp%\temp.tmp <nulREM .........................FIND "Пт" %temp%\temp.tmp > NULIF ERRORLEVEL == 0 GOTO DAY5REM .........................FIND "Вс" %temp%\temp.tmp > NULIF ERRORLEVEL == 0 GOTO DAY7:DAY5ECHO ПятницаGOTO EXITREM .........................:DAY7ECHO ВоскресеньеGOTO EXIT:EXITDEL %temp%\temp.tmp

с уважением.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

grigon

мне надо что бы я с сама вводила дату...а он мне выдовал день недели... ;)

что такоу REM.............................???????????

Ссылка на комментарий
Поделиться на другие сайты

REM.............................???????????

Это Remark - примечание, комментарий.

Ссылка на комментарий
Поделиться на другие сайты

Tas'ka

Remark - примечание, комментарий

... и если после REM ничего нет, то это знак вертикального пробела

:: Еще можно двойное двоеточие использовать как комментарий

А у вас в курсовой нельзя к *.cmd в качестве temp-файла WSH прикручивать? Вот такая конструкция запросто на консоль будет название дня недели передавать. В XP у меня по крайней мере работает, попробовал только что :

@echo off

echo wscript.echo Inputbox("Write date",":o)", Date)>tmp.vbs

for /f "delims=" %%a in (

'cscript //nologo tmp.vbs') do set yourdate=%%a

del tmp.vbs

echo %yourdate%

echo wscript.echo WeekDayName(WeekDay("%yourdate%"))>temp.vbs

for /f "delims=" %%a in (

'cscript //nologo temp.vbs') do set weekday=%%a

del temp.vbs

echo %weekday%

pause

grigon

"Командные файлы и сценарии WSH"

А ты не знаешь случаем, в сети ее найти можно? Или только покупать?

Мне уже раза три наверно советовали приобрести книжку Андрея Попова, только название "Windows Script Host для Windows 2000/XP". Я ее тоже не нашел пока в электронном виде :D

пункт Run, набираешь hh ntcmds.chm и читаешь справку

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

c:\windows\hh.exe c:\windows\Help\ntcmds.chm::/ntcmds.htm

смог начать читать справку

Изменено пользователем Premium
Ссылка на комментарий
Поделиться на другие сайты

Premium

пункт Run, набираешь hh ntcmds.chm и читаешь справку

У меня так не работает почему-то. Только когда создал ярлык и написал в свойствах c:\windows\hh.exe c:\windows\Help\ntcmds.chm::/ntcmds.htm смог начать читать справку

Хм, не знаю. У меня так работает... Чудны дела твои, Билл... :( Можно и прямо кликнуть по ntcmds.chm, найдя его поиском или перейдя в его папку. Конечно, и ярлык работает, причем просто с c:\windows\Help\ntcmds.chm

А гибрид из командного файла и скриптов любопытный получился. Правда, к тому же и странный... Нечто вроде кентавра. Вообще задача не для тренинга по командным файлам, а для олимпиады по DOS...

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Можно и прямо кликнуть по ntcmds.chm, найдя его поиском или перейдя в его папку. Конечно, и ярлык работает, причем просто с c:\windows\Help\ntcmds.chm
Неа, не знаю почему, но у меня и прямой клик по ntcmds.chm и ярлык "c:\windows\Help\ntcmds.chm" открывают только окошко, где на пустом белом фоне сиротливо написано:
Разделы данного файла справки интегрированы в центр справки и поддержки. Чтобы просмотреть эти разделы, нажмите кнопку Пуск и выберите команду Справка и поддержка
и все.
А гибрид из командного файла и скриптов любопытный получился. Правда, к тому же и странный...
Дык работает как просили, любую дату вводишь - название дня недели получаешь ... :(:):)
Ссылка на комментарий
Поделиться на другие сайты

Каких процессов? Которые в данный момент запущены на компе? В XP Prof для этого специальная команда есть, tasklist. У меня Home, как-то буквально один раз нужно было получить все запущенные приложения в список, так я сторонней утилиткой, работающей из ком. строки воспользовался, pslist с sysinternals.com. Но если можно этот список получить встроенными средствами NT\2000\XP Home, то я бы сам с удовольствием посмотрел, как это делается.

Могу в принципе еще одного кентавра :blink:(в смысле - смесь с WSH) подкинуть, там совсем коротенький код будет, но этож не выход, у ваших преподавателей такие фокусы не прокатывают наверно?

Ссылка на комментарий
Поделиться на другие сайты

Tas'ka

Не используй, пожалуйста, таких жутких выражений: "упорядочить по командной строке". Очень трудно понять, что имелось в виду :angry:

Выпив чашку кофе и посмотрев на ее дно, я решил, что нужна команда, упорядочивающая строки в текстовом файле по алфавиту и записывающая результат в новый файл.

SORT < C:\IN.TXT > C:\OUT.TXT

Такая команда возьмет содержание файла IN.TXT, находящегося в корневом каталоге диска C:, переупорядочит его строки в алфавитном порядке и направит их в созданный ею файл OUT.TXT в этом же каталоге.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Premium

<_< А почему если вводить не правельную дату напримаер: 21.21.2004.... он сначало говорит об ошибке...но потом все равно говорит, что это четверг...и при этом...при любой неверное дате...будет четверг :)

Ссылка на комментарий
Поделиться на другие сайты

А почему если вводить не правельную дату
А проверку на валидность введенной даты не заказывали, воспитанные люди знают, что 21 месяц не бывает ... :P :) У меня он выдает ошибку string только, никакого четверга.

Я вообще то так просто привел этот пример гибрида, шутки ради. WSH на несколько порядков больше имеет возможностей, чем стандартные пакетные файлы, их и сравнивать то некорректно даже как-то :)

Проверку даты на vbscript сделать недолго, разбить дату на день-месяц-год и

если введенный месяц меньше 1 или больше 12 то

msgbox "Сам дурак" и конец скрипта :)

Количество дней во любом месяце любого года можно проверить вот так:

msgbox DM(2004, 05)

Function DM(yr, dy)

DM = day(dateserial(yr,dy+1,0))

End Function

Файл *.vbs с таким содержанием выдаст тебе например, сколько дней в мае 2004 :)

Но этож все ерунда, к пакетным файлам никакого отношения не имеющая. :)

На какой операционке то у вас хоть проверять будут эти *.cmd? Потому что в Win2000 сразу после установки у меня по умолчанию команда: date /t выдает, что сегодня: Вс 09.05.2004 , то есть можно попробовать, как grigon советовал , а в XP у меня на компе никакого "Вс" и впомине нет, date /t выводит только дату, 09.05.2004. Это зависит от того, что в Панель управления-Язык и региональные стандарты, стоит по умолчанию в качестве формата краткой даты, если

ddd dd.MM.yyyy - то будет показывать день недели, если просто

dd.MM.yyyy - то только дату.

А какие настройки у ваших там преподавателей в институте?

Изменено пользователем Premium
Ссылка на комментарий
Поделиться на другие сайты

У нас в универе стоит ... 2000.... но блин....одна команда не прокатит, надо что бы я сами вводили дату.... а Date - выдает сегоднешнюю дату :)

Ссылка на комментарий
Поделиться на другие сайты

А куда вводили то? В ком.строке Inputbox нету ... Может им нужен *.cmd , который надо запускать с параметром из ком. строки, вроде lalala.cmd %1, где вместо %1 дату вставлять?

Ссылка на комментарий
Поделиться на другие сайты

Ввести-то дату (или что угодно) можно без проблем.

@echo off

copy con C:\test.txt >nul

REM теперь можно ввести одну или, при желании, несколько строк, ввод заканчивается нажатиями клавиш F6 и Enter

REM введенное будет в файле C:\test.txt

date <C:\test.txt

Проверку на ошибки ввода сама команда DATE сделает, когда получит данные из test.txt

Далее поиск и вывод дня недели по способу grigon.

Дата, конечно, съедет, но воспользуюсь доводом Premium - никто не требовал, чтобы после выполнения программы дата сохранилась. После нас хоть потоп! Его, правда, можно избежать, но тут парой строк не обойдешься, это масса дополнительной работы.

Впрочем, в конце командного файла временный файл полезно уничтожить

del C:\test.txt

Ссылка на комментарий
Поделиться на другие сайты

Тролль

Респект тебе, не знал я про такой способ ввода, с copy con . Никогда правда и не задавался целью узнать, батники обычно я если и делаю по своим надобностям изредка, то так, чтобы без всякого вмешательства со стороны юзера все работало.

Тогда я внесу свою лепту, совершенно случайно я знаю, как исправить дату обратно именно парой строк. Я когда-то интересу ради искал возможность разбить дату в батнике на день-месяц-год(как в vbscript), чтобы при бэкапе с помощью makecab.exe создавать архивы с названием вроде backup_DDMM.cab (DD-день, MM-месяц). Нашел.

В общем Tas'ke в начале батника (ну я огульно так все пакетные файлы называю, и *.bat и *.cmd) надо просто вывести текущую дату в файл C:\today.txt, дату из файла обьявить переменной, потом в конце батника вернуть ее на место:

@echo off

date /t >C:\today.txt

for /f "tokens=1-4 delims=. " %%i, in ('more C:\today.txt') do set todaydate=%%j.%%k.%%l

REM Ну для отладки можно вывести на экран, что получилось :rolleyes:

echo %todaydate%

REM Тут делаем всю работу, меняем дату и узнаем день недели

REM В конце возвращаем сегодняшнюю дату на место командой date

date %todaydate%

Но только именно в таком виде это все работает при формате короткой даты

ddd dd.MM.yyyy , я почему и спрашивал Tas'kу про это. В файле C:\today.txt будет тогда записано

Ср 12.05.2004 (что соответствует %%i %%j.%%k.%%l), если формат и разделители другие, то и буквы(i,j,k,l) тогда сдвинутся и будут иметь другие значения.

А можно и не выводить в файл(это для самоуспокоения :angry:), а прямо в *.cmd получить в качестве переменной сегодняшние dd.MM.yyyy , просто вместо ('more C:\today.txt') написать ('echo %date%')

Ссылка на комментарий
Поделиться на другие сайты

Тролль

У меня просто наглым образом меняет дату сегоднешную на ту которую я ввела <_< и дни недели просто игнорирует :angry:

Premium

ласково говорит "Внезапное появление in" :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...