Проблема с запуском командного файла

Обсуждение программ nnCron и nnCron LITE

Проблема с запуском командного файла

Postby andrystepa » Thu, 28 Aug 2014, 14:29

У меня стоит Windows 7 x32. Возникла задача: когда в каталог e:\distrib записывается новый файл (в моем случае туда должен загружаться новый каталог software с файлами внутри), должен запускаться командный файл, который переносит каталог software в другое место. Я создал задачу, запускающую командный файл catalog.cmd когда изменяется каталог e:\distrib:
Code: Select all
User: "Admin" SecPassword: "g8i4jcas" Domain: "ADMIN-PC" LogonInteractive
WatchDir: "E:\Distrib"
WATCH-CHANGE-LAST-WRITE
Action:
StartIn: "I:\CMD"
ShowNormal   NormalPriority
START-APP: I:\CMD\catalog.cmd

Но при запуске файла catalog.cmd возникает ошибка 1314:
Code: Select all
15:05:56 2884 TASK: Catalog
15:05:56 2884 Start: I:\CMD\catalog.cmd
15:05:56 2884 Start result: 1314
15:06:00 3920 TASK: Catalog
15:06:00 3920 Start: I:\CMD\catalog.cmd
15:06:00 3920 Start result: 1314

Причем дважды подряд. Я так понимаю прав не хватает. Но я же от Администратора запускаю!
andrystepa
 
Posts: 5
Joined: Thu, 28 Aug 2014, 14:16

Re: Проблема с запуском командного файла

Postby VoidVolker » Thu, 28 Aug 2014, 14:47

ннКрон запущен как приложение или как сервис? Без авторизации отрабатывает?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Проблема с запуском командного файла

Postby elos » Thu, 28 Aug 2014, 15:29

andrystepa wrote:Причем дважды подряд. Я так понимаю прав не хватает. Но я же от Администратора запускаю!

Двойное срабатывание возможно лечится с помощьюSingleInstance, но мы не знаем, что делает catalog.cmd с файлом (может он повторно и "трогает" файл)...
И авторизация задачи в данном случае важна? Имеем сетевые пути в задаче?
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Проблема с запуском командного файла

Postby andrystepa » Thu, 28 Aug 2014, 15:57

nncron запущен как приложение. Я пробовал вместо запуска файла выводить сообщение - все работало. Попробовал запустит командный файл сам, из командной строки - отказ в доступе!
Причем простое копирование с последующим удалением срабатывает, только подтверждать надо. То есть такой файл:
Code: Select all
set TO=I:\CMD
set VDATE=%date:~-10%
xcopy /e e:\Distrib\software %TO%\%VDATE%
rd /s/Q e:\Distrib\software

Работает без проблем, только xcopy требует выбрать, что копировать - файл или каталог. А вот такой командный файл:
Code: Select all
set TO=I:\CMD
set VDATE=%date:~-10%
move /Y  e:\Distrib\software %TO%\%VDATE%

Работать не хочет - отказ в доступе. Более того, даже команда
move /Y e:\Distrib\software I:\CMD\28.08.2014
запущенная из командной строки отказывается работать! Видими есть какие-то ограничения на использование команды move.
andrystepa
 
Posts: 5
Joined: Thu, 28 Aug 2014, 14:16

Re: Проблема с запуском командного файла

Postby andrystepa » Thu, 28 Aug 2014, 16:02

Я думаю двойное срабатывание из-за того, что в каталоге software 2 файла. Возможно срабатывает на запись каждого файла, а не каталога целиком.
andrystepa
 
Posts: 5
Joined: Thu, 28 Aug 2014, 14:16

Re: Проблема с запуском командного файла

Postby elos » Thu, 28 Aug 2014, 18:01

Тест авторизации проходит по кнопке в закладке задачи? Профиль грузить пробовал?

Далее повтор вопросов:
Без авторизации отрабатывает?
Диск I: мапленый? Сетевой путь есть в задаче? (Что-то буквы дисков великоваты для локальных... Хотя есть любители поставить диска четыре, каждые с несколькими разделами)

А руками команду с абсолютными путями (без подстановок) выполняет? Если для запуска руками отказ - разбираться с правами однозначно, на путь или на папку.

Что-то гадать начинаем... Полные тексты задачи и используемых внутри файлов выкладывать надо. И подробно всё описывать.
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Проблема с запуском командного файла

Postby ANR Daemon » Thu, 28 Aug 2014, 23:19

andrystepa wrote:У меня стоит Windows 7 x32. Возникла задача: когда в каталог e:\distrib записывается новый файл (в моем случае туда должен загружаться новый каталог software с файлами внутри),

Надеюсь, вы понимаете, что ваша задача будет запускаться столько раз, сколько файлов вы запишете в этот каталог?
ANR Daemon
 
Posts: 234
Joined: Mon, 26 Feb 2007, 22:59

Re: Проблема с запуском командного файла

Postby AlikasS » Fri, 29 Aug 2014, 04:19

andrystepa попробуй добавить опцию
Code: Select all
 LoadProfile

еще можно попробовать использовать вместо батника
CMD и BAT сценарии в задаче
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Проблема с запуском командного файла

Postby andrystepa » Fri, 29 Aug 2014, 08:25

elos wrote:Тест авторизации проходит по кнопке в закладке задачи? Профиль грузить пробовал?

Далее повтор вопросов:
Без авторизации отрабатывает?
Диск I: мапленый? Сетевой путь есть в задаче? (Что-то буквы дисков великоваты для локальных... Хотя есть любители поставить диска четыре, каждые с несколькими разделами)

А руками команду с абсолютными путями (без подстановок) выполняет? Если для запуска руками отказ - разбираться с правами однозначно, на путь или на папку.

Что-то гадать начинаем... Полные тексты задачи и используемых внутри файлов выкладывать надо. И подробно всё описывать.

Читайте мой предыдущий пост внимательно - там все подробно описано. А то, что буквы великоваты для локальных - у меня стоит 2 операционки, каждая на своем диске.
Тест авторизации проводил - все в порядке. Как я уже писал, командный файл с move не работает и с авторизацией и без авторизации и просто запуском из командной строки руками. Более того, как я уже писал выше, даже введенная руками в консоли команда move /Y e:\Distrib\software I:\CMD\28.08.2014 завершается отказом в доступе. Я поискал в сети - не у одного меня проблема с move, и решений ее пока не нашел. Даже если консоль запустить от администратора - все равно не работает. Сетевых путей в задаче нет - все копируется с локального диска на локальный диск.
А вот файл, где команда move заменена на xcopy + rd работает и с авторизацией и без авторизации. Вот только у хcopy есть один недостаток - она всегда спрашивает что копировать - файл или папку. А мне надо чтобы все это делалось без участия человека.
andrystepa
 
Posts: 5
Joined: Thu, 28 Aug 2014, 14:16

Re: Проблема с запуском командного файла

Postby VoidVolker » Fri, 29 Aug 2014, 08:46

andrystepa wrote:А вот файл, где команда move заменена на xcopy + rd работает и с авторизацией и без авторизации. Вот только у хcopy есть один недостаток - она всегда спрашивает что копировать - файл или папку. А мне надо чтобы все это делалось без участия человека.

Code: Select all
FILE-MOVE: "c:\xxx\test.txt" "c:\xxx\new.txt"
FILE-MOVE: "c:\xxx\test.txt" "d:\backup\test.txt"
\ перемещаем файл test.txt в каталог c:\yyy\
FILE-MOVE: "c:\xxx\test.txt" "c:\yyy\"
\ перемещаем файл test.txt в файл backup
FILE-MOVE: "c:\xxx\test.txt" "c:\backup"
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Проблема с запуском командного файла

Postby andrystepa » Fri, 29 Aug 2014, 09:00

Я нашел другой способ - команда robocopy - очень удобная и полезная замена как xcopy, так и move. Вот такой командный файл перемещает папку со всеми подпапками в новую папку:
Code: Select all
set TO=I:\CMD
set VDATE=%date:~-10%
robocopy /E /MOVE e:\Distrib\software %TO%\%VDATE%

Вот только теперь вопрос - как сделать, чтобы моя задача реагировала на копирование в папку E:\Distrib только один раз - в конце копирования.
andrystepa
 
Posts: 5
Joined: Thu, 28 Aug 2014, 14:16

Re: Проблема с запуском командного файла

Postby VoidVolker » Fri, 29 Aug 2014, 11:58

Code: Select all
#( Задача_104129082014
\ NoActive
: Dir2Watch   S" E:\Distrib\*" ;               \ В конце - маска файлов
: Dir2Move   S" I:\CMD\%DD%.%MM%.%YYYY%\" ;   \ Слэш на конце обязателен
CREATE current_dest 256 ALLOT
SingleInstance
Action:
\ ." STARTED Задача_104129082014" CR
BEGIN
    \ ." >>>" CR
   
    Dir2Move EVAL-SUBST     \ Вычисляем подстроки
    2DUP DIR-CREATE         \ Создаем структуру каталогов
    current_dest PLACE      \ Запоминаем получившийся путь

    RECURSIVE TODEPTH
    Dir2Watch FOR-FILES      \ Создаем каталоги в каталоге назначения
        IS-DIR? IF
            current_dest COUNT FOUND-RELPATH S+
            \ ."     DIR-CREATE: " 2DUP TYPE CR
            DIR-CREATE
        THEN
    ;FOR-FILES
   
    RECURSIVE TODEPTH FILESONLY
    Dir2Watch FOR-FILES      \ Перенос файлов
        \ ."     FMOVE: "
        FOUND-FULLPATH
        \ 2DUP TYPE ."  -> "
        current_dest COUNT FOUND-RELPATH S+
        \ 2DUP TYPE CR
        FMOVE
    ;FOR-FILES
   
    RECURSIVE TODEPTH
    Dir2Watch FOR-FILES      \ Удаление исходных каталогов
        IS-DIR? IF
            \ ."     FMOVE: " FOUND-FULLPATH TYPE CR
            FOUND-FULLPATH DIR-DELETE
        THEN
    ;FOR-FILES
   
    \ CR
   
    60000 PAUSE             \ Пауза
AGAIN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Exabot [Bot] and 1 guest

cron