помогите написать BATник

Компьютерное железо, цифровые устройства, программы

Модератор: Raven

Ответить
Аватара пользователя
pocomaxa
Expert
Expert
Сообщения: 2864
Зарегистрирован: 08 фев 2001 18:51
Откуда: Толбино

помогите написать BATник

Сообщение pocomaxa »

Нужно написать BAT файл

задача - есть прога которая каждый день генерит файл вида dd070423.xxx
соответственно 070423 - это дата, dd и xxx не меняются
в директории много файлов и батником надо копировать на дискету файл соответствующий дате

то есть 23 апреля надо копировать файл на 23 апреля и так далее
--=XAOC=--
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

rem копирует файлы *.txt текущей даты и из текущей директории в C:\test

dir /a:-d /o:-d *.txt | find "%DATE%" > find.fnd
for /f "tokens=4" %%I in (find.fnd) do copy %%I c:\test
del find.fnd
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

pocomaxa
Помогло?
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

Heracle писал(а):rem копирует файлы *.txt текущей даты и из текущей директории в C:\test

dir /a:-d /o:-d *.txt | find "%DATE%" > find.fnd
for /f "tokens=4" %%I in (find.fnd) do copy %%I c:\test
del find.fnd
dir /a:-d /o:-d *.txt | find "%DATE%" > find.fnd
а как же выходные :)
предположим 23 пятница, а на работу ты пришёл что бы файл копировать в понедельник, то есть 2 файла потерял - так как файл генерируется каждый день :)

задача не корректно поставлена или дискета всегда в дисководе
и по крону в нужное время батник пускается ...


да и еще лучше жёстко прописать пути используя cd
понятие из текущей папки для dos очень условное
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

Gusar
Я только направление набросал в каком копать, а так сам пусть пишет. Просто интересно, что из этого вышло. А крону в винде ваще нету, там вместо него шедулер :)
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

Heracle писал(а):Gusar
Я только направление набросал в каком копать, а так сам пусть пишет. Просто интересно, что из этого вышло. А крону в винде ваще нету, там вместо него шедулер :)
на нормальных виндузах стоит крон :) а шедулер отстой :)
http://www.wincron.com/ как вариант

а набросал правильно работать будет

я бы писал бы еще в лог последний записанный файл и проверял сколько от него появилось файлов... надо задачу точнее узнать

может он без выходных работает :)
Аватара пользователя
pocomaxa
Expert
Expert
Сообщения: 2864
Зарегистрирован: 08 фев 2001 18:51
Откуда: Толбино

Сообщение pocomaxa »

Gusar писал(а): dir /a:-d /o:-d *.txt | find "%DATE%" > find.fnd
всем спасибо помогло

за компом сидит оператор и нужен батник чтоп тупо на дискету по нажатию на иконку файлы за текущий день копировались
в дни когда комп не работает соответственно файлы не генерятцо
просто операторы часто тупят и не те файлы копирят

можно написать конечно прогу под это несложную
но тут я не силён

нащёт cron думал - он может делать чтото по нажатию по иконке а не по расписанию?
--=XAOC=--
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

крон на то и крон чтобы по расписанию запускать батник :) а не на иконку жать
Аватара пользователя
pocomaxa
Expert
Expert
Сообщения: 2864
Зарегистрирован: 08 фев 2001 18:51
Откуда: Толбино

Сообщение pocomaxa »

Gusar
нет чёткого времени когда скидывать файл на дискету
разброс до нескольких часов
--=XAOC=--
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

pocomaxa писал(а): нет чёткого времени когда скидывать файл на дискету
Тогда или нужно условие, типа if...else или обезьяна за компьютером. :)
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

тогда самый просто вариант выглядит так:

c:\temp\ куда скидывает программа
скрипт проверяет наличие файлов в c:\temp\
если есть копирует их на a:\ и переносит скопированный файл в c:\temp\архив\
таким образом в c:\temp\ у тебя будут всегда только не скопированные файлы на дискетку
думается не более трех....

в архиве файлы можно раскладывать автоматом c:\temp\архив\год\месяц\файлы.ххх

я так делал, файл могу с примером дать :)

только я еще пихал всё это дело в oracle :) архивировал на лету, делал кучу обработок ошибок, отправлял на мыло, конвертировал в word excel ... итд итп короче скрипт на все случаи жизни
и все это cmd :)
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

@echo ------- %date% %time% ------ >>C:\!REX\log
cls
@echo off
cd c:\
cd c:\!rex\
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set date=%%2-%%1-%%4%%3
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set date1=%%1%%2%%3
for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set god=%%4%%3
for /F "tokens=1-4 usebackq delims=: " %%1 in (`time /t`) do set time=%%1%%2
for /F "tokens=1-4 usebackq delims=: " %%1 in (`time /t`) do set time1=%%1:%%2

IF EXIST %god% GOTO work
IF NOT EXIST %god% GOTO newgod
GOTO ONEXIT

:work
cd %god%
@echo Год существует.
GOTO ONEXIT

:newgod
@echo Год не существует.
mkdir %god%
cd %god%
@echo Создали Год. >>C:\!REX\log
GOTO ONEXIT



:ONEXIT

IF EXIST %date% GOTO datenotwork
IF NOT EXIST %date% GOTO datework

:datework
@echo Дата не существует.
mkdir %date%
@echo Создали Дату. >>C:\!REX\log
GOTO EXIT

:datenotwork
@echo Дата существует.
GOTO EXIT

:EXIT

cd %date%
set optim=optim
IF EXIST %optim% GOTO opt
IF NOT EXIST %optim% GOTO noopt

:opt
@echo Каталог OPTIM существует.
GOTO OUT

:noopt
@echo Каталог OPTIM не существует.
mkdir %optim%
@echo Создали каталог OPTIM. >>C:\!REX\log
GOTO OUT

:OUT

@echo Копирование C:\Prg\RexWin\FILE\ >>C:\!REX\log
cd C:\Prg\RexWin\FILE\
xcopy * c:\!rex\%god%\%date%\ /Y >>C:\!REX\log
del * /Q /A :RHSA


rem ------------ проверка оптим -------------------------------------

dir "C:\Prg\RexWin\FILE\optim\*.*" /B >C:\!REX\list.txt
for /f %%i in (C:\!REX\list.txt) do goto :optyes
@Echo В каталоге OPTIM файлов нет >>C:\!REX\log
GOTO optEXIT

:optyes
@Echo Копируем UA_WIN32-OPTIM в OPTIM >>C:\!REX\log
cd C:\Prg\RexWin\FILE\optim\
xcopy * c:\!rex\%god%\%date%\optim\ /Y >>C:\!REX\log
del * /Q /A :RHSA
xcopy C:\!REX\DocToRTF.exe c:\!rex\%god%\%date%\optim\ /Y >>C:\!REX\log
cd c:\!rex\%god%\%date%\optim\
@Echo Идет конвертация doc файлов
call c:\!rex\%god%\%date%\optim\DocToRTF.exe
del c:\!rex\%god%\%date%\optim\*.doc /Q /A :RHSA
del c:\!rex\%god%\%date%\optim\DocToRTF.exe /Q /A :RHSA

xcopy C:\!REX\ExcelToVer95.exe c:\!rex\%god%\%date%\optim\ /Y >>C:\!REX\log
cd c:\!rex\%god%\%date%\optim\
@Echo Идет конвертация xls файлов
call c:\!rex\%god%\%date%\optim\ExcelToVer95.exe
del c:\!rex\%god%\%date%\optim\ExcelToVer95.exe /Q /A :RHSA

goto optEXIT

:optEXIT
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

вот этого тебе должно хватить в принципе
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

Gusar
Я конечно понимаю, что можно нагородить и не такое, но ты обрати внимание на носитель. По моему опыту, при использовании флоппика любая автоматизация неприемлима. Проще запускать тупой батник и контролировать самому скопировалось или нет. Единственное что надо бы добавить CD в нужный каталог ну и при желании @echo off :)
Аватара пользователя
Gusar
Администратор
Администратор
Сообщения: 1246
Зарегистрирован: 31 янв 2001 11:30
Откуда: Подольск
Контактная информация:

Сообщение Gusar »

Heracle писал(а):Gusar
Я конечно понимаю, что можно нагородить и не такое, но ты обрати внимание на носитель. По моему опыту, при использовании флоппика любая автоматизация неприемлима. Проще запускать тупой батник и контролировать самому скопировалось или нет. Единственное что надо бы добавить CD в нужный каталог ну и при желании @echo off :)
это пример как с датами и временем работать, это далеко не все :)
Heracle
Super expert
Super expert
Сообщения: 9445
Зарегистрирован: 11 авг 2004 22:39
Откуда: Подольск (теперь в Кузьминках)
Контактная информация:

Сообщение Heracle »

Gusar писал(а): это пример как с датами и временем работать, это далеко не все
Разуемеется, а для автоматизации еще и такие комманды, как AT и Schtasks. А cron в винде нафиг не нужен.
Ответить

Вернуться в «Hard & Soft»