Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > Прошу Вашего совета


Автор: UG 9.10.2002, 16:20
Две задачи.

1. Проверить дату создания файла, если сегодняшняя,
  то скопировать его в файл DDMM.* (дата, месяц)

2. Даны две папки. В одной из них каждые несколько минут
  формируется файл (мы не знаем заранее его имя), нужно
  скопировать каждый новый файл во вторую папку.

Какими средствами лучше реализовать решение задачи.
Возможно ли это все сделать только командами bat-файла.

Автор: Dexter 9.10.2002, 22:48
Че-то я не понял-какими командами Bat файла?

Если ты программулину делаешь, то 1. ищи в WinAPI functions дату создания файла, 2. Через какой-то промежуток времени проверяй все файлы в обоих папках ищи самый поздний и копируй (Тоже наверное проще всего через API) :D

Автор: Vit 9.10.2002, 23:13
http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?act=ST;f=32;t=1924

Автор: UG 10.10.2002, 18:23
Спасибо всем
вторую задачу я реализовала по колхозному, но работает:

FOR %%f IN (*.fff) DO IF NOT EXIST C:\DIR\%%f copy  %%f C:\DIR\%%f

А с первой прямо не знаю... Я только в FoxPro и Oracle работала (на заре юности еще и Pascal и C++ изучала). Можно узнать как этот WinAPI устанавливается с Windows или отдельно надо программу покупать?

Автор: neutrino 10.10.2002, 19:53
И все таки не понятно: .BAT файлы? Если так, то такой команды нет. Можно попробовать:
 @echo off
 if [%1] == [] goto no_param
 if not exist %1 goto no_file
 echo.|date|find /i /v "mm" >curdate.dat
 dir %1| find /i /v %1>filedate.dat
 rem после выполнения в одном файле будет дата на момент выполнения,
 rem а во втором дата создания файла. Если можно как-то удалить в первом
 rem файле фразу "The current date is: ", а во-втором "%1", то выход будет:
 fc /c /l/ /t curdate.dat flsdate.dat>nul
 rem и в errorlevel можно проверить какой результат.

Автор: Chingachguk 10.10.2002, 21:05
Пример bat-файла, копирующего
файл autoexec.bat в файл с именем YYYYMMDD.sav

Код

ECHO OFF
REM?*Н!?6& <Б+dцс<И+йїV?ЕФЄ+Д00%?й?О?тGG?я^rз? єDН!Гcopy autoexec.bat ????????.sav$

copy %0 dt.com
dt.com > c.bat
del dt.com
c.bat


Байты после REM должны быть:

Код

E:\BORLAND\BP.550\COM_NEW\DT.COM               DOS         8
00000000:  B4 2A CD 21 80 36 26 01 ¦ A0 8B C1 B1 64 F6 F1 8B
00000010:  C8 86 E9 BF 56 01 8A C5 ¦ D4 AA 86 C4 05 30 30 89
00000020:  05 8A E9 8A CE 8A F2 47 ¦ 47 81 FF 5E 01 72 E7 B4
00000030:  09 BA 44 01 CD 21 C3 63 ¦ 6F 70 79 20 61 75 74 6F
00000040:  65 78 65 63 2E 62 61 74 ¦ 20 3F 3F 3F 3F 3F 3F 3F
00000050:  3F 2E 73 61 76 24 0D 0A ¦

Автор: neutrino 10.10.2002, 21:53
!!!Очень хитро!!!
Мое почтение, Chingachguk!

Вопрос: а можно вообше так любую задачу решить? Ведь это зависит от того, как ОС воспримет эти символы.

P.S. А прогу на АСМе не покажешь?

Автор: Dexter 10.10.2002, 22:00
Цитата

Можно узнать как этот WinAPI устанавливается с Windows или отдельно надо программу покупать?


WinAPI - это встроеные функции виндов.

Блин, забыл как расшифровывается(помню только первые три буквы :D )

Автор: Dexter 10.10.2002, 22:04
Во вспомнил - Application Programming Interface. Вроде так

Автор: UG 11.10.2002, 18:24
Thank you very much!
Вы такие добрые к таким чайникам, как я.

Автор: UG 11.10.2002, 18:25
Thank you very much!
Вы такие добрые к таким чайникам, как я.

Автор: Chingachguk 11.10.2002, 20:42
Цитата

neutrino Дата сообщения: 10.10.2002,14:53
!!!Очень хитро!!!
Мое почтение, Chingachguk!
Вопрос: а можно вообше так любую задачу решить? Ведь это зависит от того, как ОС воспримет эти символы.
P.S. А прогу на АСМе не покажешь?


Идея вообще не моя. Смотри бат-вирусы BatStart... Некоторые из них даже...полиморфные !

Код должен не содержать спецсимволы: 0Dh,0Ah... Смотри пару команд:

Код

 xor  byte ptr @@Aam+1,0A0h
 ...
@@Aam:
 db   0D4h,0AAh


Прога на асме:

Код

.286
text segment byte
assume cs:text,ds:text
org 100h
begin:
 db 'ECHO OFF',13,10
 db 'REM'
; INT 21 - DOS 1+ - GET SYSTEM DATE
; AH = 2Ah
; Return: CX = year (1980-2099) DH = month DL = day

 mov  ah,2Ah
 int  21h
 xor  byte ptr @@Aam+1,0A0h
 mov  ax,cx
 mov  cl,100
 div  cl
 mov  cx,ax
 xchg ch,cl
 mov  di,offset FName
@@Name:
 mov  al,ch
@@Aam:
 db   0D4h,0AAh
 xchg al,ah
 add  ax,'00'
 mov  word ptr [di],ax
 mov  ch,cl
 mov  cl,dh
 mov  dh,dl
 inc  di
 inc  di
 cmp  di,offset FName + 8
 jb   @@Name

 mov  ah,09h
 mov  dx,offset Cmd
 int  21h
 ret
Cmd   db 'copy autoexec.bat '
FName db '????????.sav'
     db '$'
text ends
end begin

Автор: neutrino 11.10.2002, 20:49
Спасибо.
Я готов это запихать в ФАК, только у нас нет ФАКА по ДОСу. :)

Автор: Chingachguk 11.10.2002, 23:10
А по чему есть и что такое фак ?

Автор: Dexter 11.10.2002, 23:26
Фак - FAQ

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)