помогите написать BATник
Модератор: Raven
помогите написать BATник
Нужно написать BAT файл
задача - есть прога которая каждый день генерит файл вида dd070423.xxx
соответственно 070423 - это дата, dd и xxx не меняются
в директории много файлов и батником надо копировать на дискету файл соответствующий дате
то есть 23 апреля надо копировать файл на 23 апреля и так далее
задача - есть прога которая каждый день генерит файл вида dd070423.xxx
соответственно 070423 - это дата, dd и xxx не меняются
в директории много файлов и батником надо копировать на дискету файл соответствующий дате
то есть 23 апреля надо копировать файл на 23 апреля и так далее
--=XAOC=--
- Gusar
- Администратор
- Сообщения: 1246
- Зарегистрирован: 31 янв 2001 11:30
- Откуда: Подольск
- Контактная информация:
dir /a:-d /o:-d *.txt | find "%DATE%" > find.fndHeracle писал(а):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
а как же выходные

предположим 23 пятница, а на работу ты пришёл что бы файл копировать в понедельник, то есть 2 файла потерял - так как файл генерируется каждый день

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


http://www.wincron.com/ как вариант
а набросал правильно работать будет
я бы писал бы еще в лог последний записанный файл и проверял сколько от него появилось файлов... надо задачу точнее узнать
может он без выходных работает

всем спасибо помоглоGusar писал(а): dir /a:-d /o:-d *.txt | find "%DATE%" > find.fnd
за компом сидит оператор и нужен батник чтоп тупо на дискету по нажатию на иконку файлы за текущий день копировались
в дни когда комп не работает соответственно файлы не генерятцо
просто операторы часто тупят и не те файлы копирят
можно написать конечно прогу под это несложную
но тут я не силён
нащёт cron думал - он может делать чтото по нажатию по иконке а не по расписанию?
--=XAOC=--
- Gusar
- Администратор
- Сообщения: 1246
- Зарегистрирован: 31 янв 2001 11:30
- Откуда: Подольск
- Контактная информация:
тогда самый просто вариант выглядит так:
c:\temp\ куда скидывает программа
скрипт проверяет наличие файлов в c:\temp\
если есть копирует их на a:\ и переносит скопированный файл в c:\temp\архив\
таким образом в c:\temp\ у тебя будут всегда только не скопированные файлы на дискетку
думается не более трех....
в архиве файлы можно раскладывать автоматом c:\temp\архив\год\месяц\файлы.ххх
я так делал, файл могу с примером дать
только я еще пихал всё это дело в oracle
архивировал на лету, делал кучу обработок ошибок, отправлял на мыло, конвертировал в word excel ... итд итп короче скрипт на все случаи жизни
и все это cmd
c:\temp\ куда скидывает программа
скрипт проверяет наличие файлов в c:\temp\
если есть копирует их на a:\ и переносит скопированный файл в c:\temp\архив\
таким образом в c:\temp\ у тебя будут всегда только не скопированные файлы на дискетку
думается не более трех....
в архиве файлы можно раскладывать автоматом c:\temp\архив\год\месяц\файлы.ххх
я так делал, файл могу с примером дать

только я еще пихал всё это дело в oracle

и все это cmd

- Gusar
- Администратор
- Сообщения: 1246
- Зарегистрирован: 31 янв 2001 11:30
- Откуда: Подольск
- Контактная информация:
@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
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
-
- Super expert
- Сообщения: 9445
- Зарегистрирован: 11 авг 2004 22:39
- Откуда: Подольск (теперь в Кузьминках)
- Контактная информация:
Gusar
Я конечно понимаю, что можно нагородить и не такое, но ты обрати внимание на носитель. По моему опыту, при использовании флоппика любая автоматизация неприемлима. Проще запускать тупой батник и контролировать самому скопировалось или нет. Единственное что надо бы добавить CD в нужный каталог ну и при желании @echo off
Я конечно понимаю, что можно нагородить и не такое, но ты обрати внимание на носитель. По моему опыту, при использовании флоппика любая автоматизация неприемлима. Проще запускать тупой батник и контролировать самому скопировалось или нет. Единственное что надо бы добавить CD в нужный каталог ну и при желании @echo off

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