Командные (пакетные) файлы
Dec. 6th, 2011 04:51 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Многие незаслуженно игнорируют командную строку в Windows.
Однако, с ее помощью можно творить чудеса.
Представляю маленькую задачу.
Дано.
Есть программа, выдающая запрос в интернет, получающая несколько файлов данных, долго их обрабатывающая, а потом убивающая.
Задача запускается по таймеру.
Требуется.
Перехватить файлы данных и скопировать на другой сервер.
Решение.
Создаем командный файл file1.cmd В него помещаем вызов программы, прием данных которой надо перехватить. Ставим вызов этого командника в шедулер.
Потом немного обвешиваем этот вызов дополнительной хренью.
===== file1.cmd ===========
echo 1 > ~\run.flag
rem в папке ..\~ создаем флаг
start ttt.cmd
rem запускаем второй файлик, вот он-то и будет утаскивать данные. Так как работает параллельно.
rem ну идем и обрабатываем то, что нам надо ... пока работает этот модуль, нужные файлу как раз появляются постепенно, а потом самоудаляются.
del ~\run.flag
rem убиваем флаг
Второй файлик, собственно ворюга тут :)
===== tt.cmd =====
echo Test > ~\tt.txt
echo Begin > ~\tt.txt
rem Ну это просто для теста строчки, так, чтобы смотреть как много раз скопировалось подряд.
:begin
rem ну begin и есть begin, метка такая будет у нас
if not exist ~\run.flag goto end
rem Если флага нет, выходим
echo once more >> ~\tt.txt
rem Создаем засечку в логе
copy ***** c:\up\*.* >>\tt1.txt
rem вот и копируем куда-то в сторону эти файлики/
rem Заодно и вывод команды копирования посмотрим :)
goto begin
Rem Вот и и в начало вернемся, вдруг не все файлики спёрли :)
:end
rem Ну а сюда идем, когда нету флага. Соответственно дальше на выход и передачу того, что сперли
c:
rem Уходим на диск C:
cd \up
rem Переходим в каталог UP
rar m receive.rar *.ххх
rem Перемещаем в архив receive.rar то, что сперли.
copy /z receive.rar "\\***\***\Robot v2\*.*"
rem копируем на другой сервер.
del receive.rar
Rem Зачищаем файлик.
exit
rem закрываем окошко.
Теперь все красиво, файлики спёрты, можно и обработать спокойненько на другой системе.
Ну что, кто-нибудь догадался как эту задачку решить иначе? Притом только штатными средствами Windows.

Однако, с ее помощью можно творить чудеса.
Представляю маленькую задачу.
Дано.
Есть программа, выдающая запрос в интернет, получающая несколько файлов данных, долго их обрабатывающая, а потом убивающая.
Задача запускается по таймеру.
Требуется.
Перехватить файлы данных и скопировать на другой сервер.
Решение.
Создаем командный файл file1.cmd В него помещаем вызов программы, прием данных которой надо перехватить. Ставим вызов этого командника в шедулер.
Потом немного обвешиваем этот вызов дополнительной хренью.
===== file1.cmd ===========
echo 1 > ~\run.flag
rem в папке ..\~ создаем флаг
start ttt.cmd
rem запускаем второй файлик, вот он-то и будет утаскивать данные. Так как работает параллельно.
rem ну идем и обрабатываем то, что нам надо ... пока работает этот модуль, нужные файлу как раз появляются постепенно, а потом самоудаляются.
del ~\run.flag
rem убиваем флаг
Второй файлик, собственно ворюга тут :)
===== tt.cmd =====
echo Test > ~\tt.txt
echo Begin > ~\tt.txt
rem Ну это просто для теста строчки, так, чтобы смотреть как много раз скопировалось подряд.
:begin
rem ну begin и есть begin, метка такая будет у нас
if not exist ~\run.flag goto end
rem Если флага нет, выходим
echo once more >> ~\tt.txt
rem Создаем засечку в логе
copy ***** c:\up\*.* >>\tt1.txt
rem вот и копируем куда-то в сторону эти файлики/
rem Заодно и вывод команды копирования посмотрим :)
goto begin
Rem Вот и и в начало вернемся, вдруг не все файлики спёрли :)
:end
rem Ну а сюда идем, когда нету флага. Соответственно дальше на выход и передачу того, что сперли
c:
rem Уходим на диск C:
cd \up
rem Переходим в каталог UP
rar m receive.rar *.ххх
rem Перемещаем в архив receive.rar то, что сперли.
copy /z receive.rar "\\***\***\Robot v2\*.*"
rem копируем на другой сервер.
del receive.rar
Rem Зачищаем файлик.
exit
rem закрываем окошко.
Теперь все красиво, файлики спёрты, можно и обработать спокойненько на другой системе.
Ну что, кто-нибудь догадался как эту задачку решить иначе? Притом только штатными средствами Windows.
