Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Объединить нескольно cmd (http://forum.oszone.net/showthread.php?t=342264)

mxm199 20-09-2019 10:43 2888753

Объединить нескольно cmd
 
День добрый, помогите объединить такое "творение", что-то у меня не получается (
Имеется установленная TiddlyWiki на Node.js, рабочая папка вики 'wiki' расположена в папке пользователя

Первым cmd я создаю бекап вики

Код:

@echo off
cd /D %Userprofile%
tiddlywiki wiki --build index

Запускать команду бекапа надо именно из папки, где установлена вики, из других команда не отрабатывает
В ответ получаем
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList
и в папке %UserProfile%\wiki\output создаётся файл index.html

Код:

mkdir \\server\backup\tw\%date%
Создаю архивную папку с текущим числом в месте хранения

Код:

move /y %UserProfile%\wiki\output\index.html \\server\backup\tw\%date%
переношу в созданную папку файл бекапа

Вообще эти три команды у меня настроены в штатном шедулере, и отрабатывают, но выглядит как "костыль". И к тому же тут мне попался на глаза прекрасный скрипт по удалению старых папок архивов, подправил под себя, прекрасно работает, спасибо Iska

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sFolder=\\server\backup\tw\%date%
set /a iCount = 5

for /f "skip=%iCount% usebackq delims=" %%i in (
    `dir /b /a:d /o:-d /t:w "%sFolder%"`
) do rd /s /q "%sFolder%\%%~i"

endlocal
exit /b 0

Можно ли объединить всё в один cmd, и присовокупить errorlevel к первой команде, ExitCode '0', если успех, то есть если успешный бекап, то переносится архив на сервер и удаляются старые ахивы. Но моё очередное "творение" даже в таком тестовом виде
Код:

@echo off
cd /D %Userprofile%
tiddlywiki wiki --build index
if errorlevel 0 (
Msg /time:90 * "Готово."
) else (
Msg /time:90 * "Ошибка"
goto :eof
)

ничего не даёт, бекап создаётся, но более ничего не происходит. Такое впечатление, что после выполнения команды tiddlywiki my19 --build index скрипт завершается, ибо как даже при таком варианте
Код:

@echo off
cd /D %Userprofile%
tiddlywiki my19 --build index
Msg /time:90 * Тест.

сообщение не показывает.

Спасибо за помощь!

Ageron 20-09-2019 10:49 2888755

Цитата:

Цитата mxm199
сообщение не показывает. »

добавить pause в конце скрипта
и запустить

mxm199 20-09-2019 10:51 2888756

Пробовал, тоже самое, только создаёт бекап
Соответственно, так
Код:

@echo off
cd /D %Userprofile%
tiddlywiki wiki --build index
echo %ErrorLevel%

тоже не показывает код выхода



Может можно как-нибудь отловить успех по выводу консоли? Он всегда одинаков "syncer-server-filesystem: Dispatching 'save' task: $:/StoryList".

Charg 20-09-2019 11:29 2888769

Цитата:

Цитата mxm199
но выглядит как "костыль" »

Честно говоря вики в виде одного файла (если я правильно понял) работающая в контексте пользователя локально - это наикостыльнейший костыль из всех костылей.
Может стоит посмотреть в сторону альтернативных вариантов решения изначальной задачи, для которой эта вики используется?


Насчёт ErrorLevel - так не получится.
Потому что ты говоришь командной строке "отправь команду такую-то", и т.к. команда успешно отправляется на обработку куда-то дальше (на tiddlywiki) - errorlevel всегда будет 0.
Утилита CMD ничего не знает о том кто такое tiddlywiki, что оно делает или не делает и произошла ли на той стороне ошибка. С колокольни CMD это выглядит "я отправил команду, получил ответ - всё работает", следовательно errorlevel = 0

Если нужен лог ошибок - простейший (имхо) вариант - парсить всё на выходе построчно и дальше уже что-то делать.

mxm199 20-09-2019 11:45 2888772

Вложений: 2
Цитата Charg:
отправь команду такую-то »
а если это завернуть в какой-либо, не знаю, обработчик что-ли?

Для автоматизации разного рода задач на серверах я вообще привык использовать xStarter, он очень даже хорошо справляется с основными задачами, и если через него запускать эту команду -
http://forum.oszone.net/attachment.p...1&d=1568969461
то он показывает и код выхода и вывод консоли
http://forum.oszone.net/attachment.p...1&d=1568968973

Но! На Win10, на Win2008r2 это почему-то не прокатывает, ругается мол неопознанная команда tiddlywiki

Charg 20-09-2019 11:55 2888775

mxm199, что это за автоматизация такая, которая предполагает клацание по кнопочкам в интерфейсе?
В шиндовсе есть встроенный планировщик, который делает ровно то же самое, бонусом отменяет зависимость от внешнего программного обеспечения (xStarter'a этого).
Нет, я не спорю, инструмент может хороший и удобный, и может что-то такое особенное он умеет, но если задача стоит просто на запуск команды по таймеру - это лишнее звено, имхо.

Цитата:

Цитата mxm199
ругается мол неопознанная команда tiddlywiki »

В выводе echo %path% на клиентском компе есть упоминание этой вики (а точнее - месторасположения), а на серверной - нет. Угадал?

mxm199 20-09-2019 12:23 2888781

Цитата:

Цитата Charg
Угадал? »

Нет, это разные вики, на серваке стоит основная, а эксперементирую на локально установленной, пути разные по-этому

Цитата:

Цитата Charg
предполагает клацание »

Дык, сначала наклацал, как конструктор, собрал что надо, а дальше и не вспоминаешь об этом

Iska 20-09-2019 16:22 2888809

mxm199,
  1. Где именно взять tiddlywiki, чтобы пощупать?
  2. В таком варианте:
Цитата:

Цитата mxm199
Код:

if errorlevel 0 (
    Msg /time:90 * "Готово."
) else (
    Msg /time:90 * "Ошибка"
    goto :eof
)

»

ветвь else никогда не получит управление. Потому как if errorlevel Number означает:
Цитата:

Цитата if /?
ERRORLEVEL число Условие является истинным, если код возврата последней выполненной программы не меньше указанного числа.

То есть — для приведённого Вами кода получается не просто «равен нулю», а «равен или больше нуля». Если нужно именно сравнение на равенство, то:
Код:

if "%errorlevel%" equ "0" …

alpap 20-09-2019 17:29 2888825

Цитата:

Цитата mxm199
можно как-нибудь отловить успех »

Цитата:

Цитата mxm199
Первым cmd я создаю бекап вики »

Цитата:

Цитата mxm199
в папке %UserProfile%\wiki\output создаётся файл index.html »

Код:

if exist "%UserProfile%\wiki\output\index.html" (
 Msg /time:90 * "Готово."
) else (
 Msg /time:90 * "Ошибка"
)


mxm199 23-09-2019 14:31 2889225

Цитата Iska:
де именно взять tiddlywiki, чтобы пощупать »
Здесь

Цитата alpap:
if exist »
Да, кстати неплохая идея)


p.s. спасибо за советы, попробовал и так и так, но как я и писал выше

Цитата:

Цитата mxm199
Такое впечатление, что после выполнения команды tiddlywiki my19 --build index скрипт завершается »

ничего после не выполняется, хотя наверно можно "if exist" завернуть просто в отдельный скрипт, который будет в шедулере выполняться после первого

alpap 23-09-2019 15:51 2889248

что пишет если так запустить:
Код:

cmd /k "tiddlywiki my19 --build index"
pause


Iska 23-09-2019 16:40 2889264

Цитата:

Цитата mxm199
Здесь »

Что «здесь» — я как бы в курсе. Я не вижу там tiddlywiki.exe. Можете ткнуть пальцем?

YuS_2 23-09-2019 18:49 2889278

Цитата:

Цитата Iska
Можете ткнуть пальцем? »

Там надо выбрать платформу, потом вариант реализации, например, TiddlyDesktop - появится ссылка на гитхаб, видимо, это и есть приложение...

Iska 23-09-2019 19:56 2889293

YuS_2, спасибо. Я бы хотел получить эту информацию в первую очередь от заинтересованного лица — автора. Мне не хочется перебирать.

Sham 24-09-2019 14:32 2889395

tiddlywiki.cmd там должен быть (костыль для шебанга в windows). В натуре это "node.exe tiddlywiki.js"

mxm199 24-09-2019 16:35 2889416

Цитата:

Цитата Iska
Я не вижу »

Да, сорри, там ссылка да скачку одного html-файла он и есть вся и всё вики на все платоформы, всё в нём хранится и всё на нём содержится, бекап он тут и есть бекап). Для серверного варианта нужна установка node.js и пару команд для установки вики
Скрытый текст

Open a command line terminal and type:

npm install -g tiddlywiki

Check TiddlyWiki is installed by typing:

tiddlywiki --version

In response, you should see TiddlyWiki report its current version (eg "5.1.21"; you may also see other debugging information reported)
Try it out:

tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
tiddlywiki mynewwiki --listen to start TiddlyWiki
Visit http://127.0.0.1:8080/ in your browser


и всё работает.

Цитата:

Цитата alpap
что пишет если так запустить: »

C:\Users\Toshiba>cmd /k "tiddlywiki mynewwiki --build index"
syncer-server-filesystem: Dispatching 'load' task: $:/themes/tiddlywiki/vanilla/settings/backgroundimage
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList

C:\Users\Toshiba>

И всё, бекап делает и всё, нажатие кнопки не просит.


Время: 12:36.

Время: 12:36.
© OSzone.net 2001-