Запланированный пакетный файл не запущен - PullRequest
0 голосов
/ 30 мая 2019

У меня есть файл .bat. Если я запускаю его вручную ( двойной щелчок ), это работает. Если я планирую это, это не так.

Я пытался найти ответы на аналогичные вопросы в StackOverflow, но ни один из них не работает. Как:

Я изменил общие параметры.

  • Запуск независимо от подключения пользователя

Я сменил пользователя, запустив запланированное задание.

  • Шахта, кстати, имеет максимальные разрешения и при двойном щелчке работает.

  • Я допустил максимальное количество разрешений.

  • Изменено " Добавить аргумент " и " Начать с "

  • Я не установил никаких условий на вкладке " условия "

Я новичок в написании сценариев, поэтому возможно я что-то неправильно установил.

Это мой код:

@echo off

"C:\Program Files (x86)\WinSCP\winscp.com" /log=winscp.log /ini=nul /command ^
"open sftp://user:password@mySite.com -hostkey=""ssh-rsa 4096 xxxxxxxxx/yyyyw=""" ^
"option batch" ^
"option transfer binary" ^
"synchronize remote -filemask=""*.png>=2016-01-01<4M;*.jpg>=2016-01-01<4M "" \\FromFolder /destination/ -nopreservetime"

"exit"

Если я поставлю md C:\Temp & echo %TIME%>C:\Temp\Test.txt в виде строки 2 °, он запишет файл Test.txt. Если я положу его в конец файла, это не так. Нет проблем, если я запускаю его двойным щелчком мыши.

Мне нужна задача для запуска файла .bat, как будто я дважды щелкаю по нему. Я не знаю, возможно ли открыть оболочку или запустить ее в фоновом режиме, так как оба они полезны для меня. Дайте мне знать.

Спасибо за предложения.

1 Ответ

1 голос
/ 31 мая 2019

WinSCP, скорее всего, не работает.Я полагаю, что поскольку рабочий каталог командного файла не является шляпой, вы думаете, и winscp.log не может быть создан там.Попробуйте использовать путь, подобный вашему тесту отладки: C:\Temp\winscp.log.

Причина, по которой md C:\Temp & echo %TIME%>C:\Temp\Test.txt не работает в конце вашего пакетного файла, - это команда exit.Вы, вероятно, считаете, что это интерпретируется как команда WinSCP.Но это не так.Вы пропускаете ^ после команды synchronize.И кроме того, у вас есть пустое место после него.Как следствие, exit не является частью командной строки WinSCP, но вместо этого выходит из командного файла.Кроме того, строки должны быть с отступом (хотя я предполагаю, что это скорее из-за вашего пост форматирования).

Попробуйте что-то вроде этого:

@echo off

md C:\Temp
echo %TIME% > C:\Temp\Test.txt 

"C:\Program Files (x86)\WinSCP\winscp.com" /log=C:\temp\winscp.log /ini=nul /command ^
    "open sftp://user:password@mySite.com -hostkey=""ssh-rsa 4096 xxxxxxxxx/yyyyw=""" ^
    "option batch" ^
    "option transfer binary" ^
    "synchronize remote -filemask=""*.png>=2016-01-01<4M;*.jpg>=2016-01-01<4M "" \\FromFolder /destination/ -nopreservetime" ^
    "exit" >> C:\Temp\Test.txt 

echo %TIME% >> C:\Temp\Test.txt 

См. Также FAQ по WinSCP Почемунекоторые команды сценариев WinSCP, указанные в командном файле, не выполняются / не выполняются?

...