Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подверждение выполнения команд в bat файле (Y/N)

Ответить
Настройки темы
CMD/BAT - [решено] Подверждение выполнения команд в bat файле (Y/N)

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Sergey.l
Дата: 09-01-2018
Помогите написать код, чтобы перед выполнением, например нескольких команд move (переместить) выдавался запрос с текстом "Подтвердить выполнение? (Y/N)
Нашел вот этот код
Код: Выделить весь код
Код:
@set /p answer=Подтвердите выполнение? (Y/N): 
if %answer%==y move d:/folder/*.doc d:/folder/2018/01/09/ 
move d:/folder/*.docx d:/folder/2018/01/09/ 
move d:/folder/*.txt d:/folder/2018/01/09/ 
if %answer%==n cls
, но он работает только с одной командой, т.е. если, например будет две или три команды move, то при нажати N, отменяется первая команда, а остальные выполняются. Как сделать так чтобы под условием (подверждением yes/no) работали все команды?

Просьба не предлагать решение задачи на др. кроме BAT, т.к. все готовые команды, а их много, написаны на BAT.

Отправлено: 17:58, 09-01-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Sergey.l, следует разместить сие перед каждой командой move. Кроме того, на Windows 2003 и выше имеет смысл задействовать не set /p, а choice.exe (на предыдущих версиях его не было в комплекте, и требовалась отдельная установка из Resource Kit'ов), наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

choice.exe /m "Переместить *.doc"
if %errorlevel% equ 1 move d:/folder/*.doc d:/folder/2018/01/09/

choice.exe /m "Переместить *.docx"
if %errorlevel% equ 1 move d:/folder/*.docx d:/folder/2018/01/09/

choice.exe /m "Переместить *.txt"
if %errorlevel% equ 1 move d:/folder/*.txt d:/folder/2018/01/09/

endlocal
exit /b 0

Отправлено: 18:19, 09-01-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


У нас Windows 7. Т.е. choice.exe будет выдавай запрос на разрешение выполнения команды? Я просто не вижу теста с (Y/N)
Цитата Iska:
Sergey.l, следует разместить сие перед каждой командой move. Кроме того, на Windows 2003 и выше имеет смысл задействовать не set /p, а choice.exe (на предыдущих версиях его не было в комплекте, и требовалась отдельная установка из Resource Kit'ов), наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

choice.exe /m "Переместить *.doc"
if %errorlevel% equ 1 move d:/folder/*.doc d:/folder/2018/01/09/

choice.exe /m "Переместить *.docx"
if %errorlevel% equ 1 move d:/folder/*.docx d:/folder/2018/01/09/

choice.exe /m "Переместить *.txt"
if %errorlevel% equ 1 move d:/folder/*.txt d:/folder/2018/01/09/

endlocal
exit /b 0

Отправлено: 18:29, 09-01-2018 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Sergey.l:
Я просто не вижу теста с (Y/N) »
Смотрите:
Скрытый текст


«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c:
Цитата choice.exe /?:
/C список Создаваемый список выбираемых элементов.
Список по умолчанию "YN".

Отправлено: 18:46, 09-01-2018 | #4


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все хорошо, но как быть если в батнике более 20 команд. Устанешь Y нажимать. Может есть возможность команды выполнить под одним подтверждением или запуск батника сделать с подтверждением?
Цитата Iska:
Цитата Sergey.l:
Я просто не вижу теста с (Y/N) »
Смотрите:
Скрытый текст


«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c:

Отправлено: 20:36, 09-01-2018 | #5


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Или может в ТоталКоммандере прописать ключ для запуска батника с подтверждением?
p.s. необходимость подтверждения возникла из за осторожности, чтобы случайно не "понажимать", а то у нас девушки в смене, которые нажимают куда попало
Цитата Iska:
«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c: »

Отправлено: 20:52, 09-01-2018 | #6


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Наткнулся на вот эту статью http://www.winblog.ru/win7/1147767821-09121101.html
Можно сделать такое меню, чтобы под цифрами выполнялись батники?

Отправлено: 21:12, 09-01-2018 | #7


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Воспользовался вашим советом. решил вместо подтверждения сделать диалог, меню
Написал такой код
Код: Выделить весь код
Echo off
cls
Echo Work menu
Echo ============================================================================
Echo 1 111.bat             создать папки
Echo 2 222.bat             переместить заготовки
Echo 2 333.bat             забрать файлы по маске

Echo ============================================================================
Choice /C 123 /M "Выберите один из вариантов!"

If Errorlevel 1 Goto 1
If Errorlevel 2 Goto 2
If Errorlevel 3 Goto 3

Goto End

:3
cls
d:\папка\333.bat
Goto End


:2
cls
d:\папка\222.bat
Goto End

:1
cls
d:\папка\111.bat
Goto End
Проблема в том, что нажимаю цифру 2 или 3 выполняется все равно батник под цифрой 1
Поможете разобраться?
Цитата Iska:
choice.exe »

Отправлено: 21:56, 09-01-2018 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Sergey.l:
Все хорошо, но как быть если в батнике более 20 команд. Устанешь Y нажимать. Может есть возможность команды выполнить под одним подтверждением »
Прошу прощения, видимо, я неправильно Вас понял. Возможно, Вы хотели что-то такое?
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

choice.exe /m "Переместить файлы *.doc, *.docx, *.txt"

if %errorlevel% equ 1 (
	move d:/folder/*.doc d:/folder/2018/01/09/
	move d:/folder/*.docx d:/folder/2018/01/09/
	move d:/folder/*.txt d:/folder/2018/01/09/
)

endlocal
exit /b 0
Или, ещё проще:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

choice.exe /m "Переместить файлы *.doc, *.docx, *.txt"

if %errorlevel% equ 1 for %%i in (*.doc *.docx *.txt) do move "d:/folder/%%~i" "d:/folder/2018/01/09/"

endlocal
exit /b 0
Цитата Sergey.l:
Можно сделать такое меню, чтобы под цифрами выполнялись батники? »
Можно. Примерно так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat
echo ╔═══════════ Меню ═══════════╗
echo ║ 1. Создать папки           ║
echo ║ 2. Переместить заготовки   ║
echo ║ 3. Забрать файлы по маске  ║
echo ║ 4. Выход из меню           ║
echo ╟────────────────────────────╢
echo ║ Выберите один из вариантов ║
echo ╚════════════════════════════╝
echo.
choice.exe /c 1234

if %errorlevel% equ 4 exit /b
if %errorlevel% equ 255 exit /b

call :Sub%errorlevel%
goto :Repeat

endlocal
exit /b 0

:Sub1
	call d:\папка\111.bat
	exit /b

:Sub2
	call d:\папка\222.bat
	exit /b

:Sub3
	call d:\папка\333.bat
	exit /b


Причём необязательно, чтобы именно «выполнялись батники» — можно исполнять код непосредственно в процедурах прямо в этом же файле.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:48, 10-01-2018 | #9


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, а как вы делали рамку для меню?
Код: Выделить весь код
echo ╔═══════════ Меню ═══════════╗
echo ║ 1. Создать папки           ║
echo ║ 2. Переместить заготовки   ║
echo ║ 3. Забрать файлы по маске  ║
echo ║ 4. Выход из меню           ║
echo ╟────────────────────────────╢
echo ║ Выберите один из вариантов ║
echo ╚════════════════════════════╝
echo.
есть ли инструмент для этого или вручную символ в каждую строку?
Цитата Iska:
Можно. Примерно так:
Скрытый текст »

Последний раз редактировалось Sergey.l, 10-01-2018 в 11:58.


Отправлено: 10:54, 10-01-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подверждение выполнения команд в bat файле (Y/N)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Логирование выполнения команд с датой и временем Pank Скриптовые языки администрирования Windows 5 28-11-2017 16:53
CMD/BAT - Как в .bat файле сделать вывод результата выполнения в переменную?? Eugene Shugaev Скриптовые языки администрирования Windows 1 12-03-2014 13:39
Разное - [решено] Создание ярлыков для выполнения команд alivakos Microsoft Windows 7 3 02-09-2013 14:55
Скрипт для выполнения команд после подтверждения Pozia AutoIt 14 27-06-2012 23:46
CMD/BAT - Проверка на выполнения команд в bat ? men232 Скриптовые языки администрирования Windows 4 12-01-2011 22:23




 
Переход