Одним из недостатков BAT файлов является то, что в результате работы какой-то программы мы не можем получить ее результат, кроме кода возврата. Ну, например, мы хотим, чтобы при запуске BAT файла производилось резервное копирование в папочку. Это мы можем сделать, а вот как сделать так, чтобы имя папки формировалось в соответствии с текущей датой. Умея немного программировать для DOS это можно сделать. Напишем программу Times.exe, которая будет записывать в указанный файл текущую дату. Я использовал Borland C++ 3.1, Вы можете использовать все, что может делать программы в формате MS DOS. Вот код.
#include "stdio.h" #include "process.h" #include "FCNTL.H" #include "string.h" #include "io.h" int main(int argc, char *argv[ ]) { printf("First Steps Site(C) 2002\n"); if (argc==4) { int ifile; int ofile; int rez; ifile=_open(argv[1],O_RDONLY); if (ifile!=-1) { char buffer[255]; rez=read(ifile,buffer,254); if (rez!=-1) { printf(argv[1]); printf(" "); printf(argv[2]); printf(" "); buffer[rez]=0; printf(buffer); printf("\n"); ofile=open(argv[2], O_CREAT | O_WRONLY | O_TRUNC); if (ofile!=-1) { write(ofile,argv[3],strlen(argv[3])); write(ofile," ",2); write(ofile,buffer,strlen(buffer)); close(ofile); } else { printf("error create\n"); return 1; } } else { printf("error read\n"); return 1; } } else { printf("error open file \n"); return 1; } return 0; } else { printf("error parametrs\n"); return 1; } }
Сам код и готовый EXE находится в проекте. Использовать его достаточно легко, надо создавать BAT файл, в котором передается параметр.
times.exe times.txt
В результате работы будет создан текстовый файл, в котором находится текущая дата.