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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] архив->перенос на флешку->выключение компьютера (http://forum.oszone.net/showthread.php?t=344262)

nor61k 01-03-2020 18:03 2911548

архив->перенос на флешку->выключение компьютера
 
добрый день, win7. стоит задача сделать архив из папки, перенести его на флешку и после переноса выключить комп.
к сожалению в данный сами команды не предоставлю,но сделал через 7zip архивирование, через robocopy перенос архива на флешку в папку с датой копирования и выключение компьютера.
вопрос в том, как сделать в bat файле так, чтобы команда запускалась только после выполнения предыдущей?видел start /wait, но я так понял это для других случаев, пока только приметил решение в виде таймаута, но может есть более адекватное решение?

iglezz 01-03-2020 18:11 2911556

start /wait в том числе и для таких случаев
другие решения:
команда1 & команда2 & команда3 - последовательное выполнение
команда1 && команда2 && команда3 - выполнение следующей команды в случае успешного завершения предыдущей (определяется по кодам возврата и годится для программ, корректно работающих с ними)

megaloman 01-03-2020 20:10 2911579

Цитата:

Цитата nor61k
как сделать в bat файле так, чтобы команда запускалась только после выполнения предыдущей »

О какой предыдущей команде идёт речь?
Вот вариант создания архива на флэшке.
Код:

@Echo Off
cls
        Set "BoxIn=D:\CMD\JS_Host\Дискета_от_книги"

        Set "Arc=C:\Program Files\7-Zip\7zG.exe"

        Set "Flash="
        FOR /F "usebackq tokens=1 skip=1 delims=:" %%d IN (`"wmic logicaldisk where drivetype="2" get caption | FINDSTR /R /C:"[A-Z]""`) DO Set "Flash=%%d"
        If "%Flash%"=="" (Echo Flash Disk not found &Pause &Exit /b 1)

        FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"

        Set "FileOut=%BoxIn::\=#%"
        Set "FileOut=%FileOut::=%"
        Set "FileOut=%Flash%:\%@Tdate:~0,8%_%FileOut:\=^%"

        "%Arc%" a -r "%FileOut%" "%BoxIn%\"
        shutdown /s /f
Exit /B 0

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

Iska 01-03-2020 20:17 2911582

Цитата:

Цитата nor61k
вопрос в том, как сделать в bat файле так, чтобы команда запускалась только после выполнения предыдущей? »

Вопрос в том, как Вы сделали? Нам отсюда Ваш код не виден. Приведите его.

Цитата:

Цитата megaloman
Можно, конечно, создавать архив где-то на внутреннем диске, а затем переносить на флэшку. Но смысл? »

Обычно это выходит намного быстрее.

Colvor 04-11-2023 06:11 3019490

Это не готовый код, просто пример.
Вы можете использовать мой скрипт чуток поменяв его, он проверяет работу программы циклически с задержкой и в зависимости от того работает программа или нет уже делает действия.
timeout /t xxx /nobreak можно использовать вместо ping, однако тогда будет спамить "таймером"

Код:

@echo off
title Проверка работы программы

:start_manifest
tasklist|Find /I "7zG.exe" > nul||goto Power_off
ping -n 60 localhost > nul
goto start_manifest

:Power_off
shutdown /s /t 60
exit


DJ Mogarych 04-11-2023 14:32 3019501

Powershell v5
Код:

Compress-Archive "путь\к\папке" "путь\к\архиву\на\флешке.zip"
shutdown.exe /s /f /t 00



Время: 11:45.

Время: 11:45.
© OSzone.net 2001-