Показать полную графическую версию : [решено] Подверждение выполнения команд в bat файле (Y/N)
Sergey.l
09-01-2018, 17:58
Помогите написать код, чтобы перед выполнением, например нескольких команд 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.
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
Sergey.l
09-01-2018, 18:29
У нас Windows 7. Т.е. choice.exe будет выдавай запрос на разрешение выполнения команды? Я просто не вижу теста с (Y/N)
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
Я просто не вижу теста с (Y/N) »
Смотрите:
https://i.imgur.com/JRWOBax.png
«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c:
/C список Создаваемый список выбираемых элементов.
Список по умолчанию "YN".
Sergey.l
09-01-2018, 20:36
Все хорошо, но как быть если в батнике более 20 команд. Устанешь Y нажимать. Может есть возможность команды выполнить под одним подтверждением или запуск батника сделать с подтверждением?
Я просто не вижу теста с (Y/N) »
Смотрите:
https://i.imgur.com/JRWOBax.png
«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c:
Sergey.l
09-01-2018, 20:52
Или может в ТоталКоммандере прописать ключ для запуска батника с подтверждением?
p.s. необходимость подтверждения возникла из за осторожности, чтобы случайно не "понажимать", а то у нас девушки в смене, которые нажимают куда попало
«[Y,N]?» — добавляется по умолчанию, если иного не задано параметром /c: »
Sergey.l
09-01-2018, 21:12
Наткнулся на вот эту статью http://www.winblog.ru/win7/1147767821-09121101.html
Можно сделать такое меню, чтобы под цифрами выполнялись батники?
Sergey.l
09-01-2018, 21:56
Воспользовался вашим советом. решил вместо подтверждения сделать диалог, меню
Написал такой код
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
Поможете разобраться?
choice.exe »
Все хорошо, но как быть если в батнике более 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
Можно сделать такое меню, чтобы под цифрами выполнялись батники? »
Можно. Примерно так:
@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
Причём необязательно, чтобы именно «выполнялись батники» — можно исполнять код непосредственно в процедурах прямо в этом же файле.
Sergey.l
10-01-2018, 10:54
Подскажите, а как вы делали рамку для меню?
echo ╔═══════════ Меню ═══════════╗
echo ║ 1. Создать папки ║
echo ║ 2. Переместить заготовки ║
echo ║ 3. Забрать файлы по маске ║
echo ║ 4. Выход из меню ║
echo ╟────────────────────────────╢
echo ║ Выберите один из вариантов ║
echo ╚════════════════════════════╝
echo.
есть ли инструмент для этого или вручную символ в каждую строку?
Можно. Примерно так:
Скрытый текст »
есть ли инструмент для этого или вручную символ в каждую строку? »
Рисование линий — один из забавнейших встроенных плагинов встроенного редактора — это рисование линий. Для этого необходимо в редакторе вызвать окно плагинов F11 и активировать Draw Lines. После этого переключать на одинарную/двойную линию можно клавишей F2, а рисование происходит при нажатой клавише SHIFT и перемещению курсора стрелками.
https://i.imgur.com/Dxkkzbb.png
А Iska - известный адепт FAR и его встроенного редактора.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.