View Full Version : سوال: انتخاب دو یا چند گزینه در داس
zirak58
شنبه 30 شهریور 1398, 06:57 صبح
سلام من میخوام با داس یک فایل نصبی درست کنم که از طریق منو بتوانم فایلهای مورد نیاز خود را انتخاب و نصب کنم.
مشکل من اینه که نمیدانم چطور دو کلید همزمان به داس بدم که این کار را برای من انجام بده.
مثلا میخوام گزینه 1و3 نصب بشه و از نصب گزینه دو خودکاری کنه یا گزینه 1و2 نصب بشه و از از نصب گزینه 3 جلوگیری شه.
مانند عکس زیر:
150758
اینم نمونه کدی که درست کردم اما تنها یک گزینه را میشود انتخاب کرد:
@echo off
set "cols=50"
set "lines=10"
mode con: cols=%cols% lines=%lines%
cls
:menu
rem Color 0F
Color 1F
cls
title Silent installer
echo [1] intall Acrobat Reader
echo [2] Install WinRAR archiver
echo [3] Install Firefox
echo [4] Install all files
echo.
echo [5] exit
echo.
echo input key:
set /p menuchoice=
if %menuchoice% == 1 goto Acrobat
if %menuchoice% == 2 goto WinRAR
if %menuchoice% == 3 goto Firefox
if %menuchoice% == 4 goto allfiles
if %menuchoice% == 5 goto exit
cls
:Acrobat
cls
Color 2F
echo.
echo Install Silent... (1-3)
echo.
echo Install Adobe Acrobat Reader
start /w x86\Soft\Adobe_Acrobat.exe
cls
goto menu
:WinRAR
cls
Color 2F
echo.
echo Install Silent... (2-3)
echo.
echo Install WinRAR archiver
start /w x86\Soft\WinRAR.exe
cls
goto menu
:Firefox
cls
Color 2F
echo.
echo Install Silent... (3-3)
echo.
echo Install Firefox
start /w x86\Soft\fiefox.exe
cls
goto menu
:exit
cls
Color 4F
echo.
@echo Exit Command Prompt
echo.
@pause
ASHKANLAEI
شنبه 30 شهریور 1398, 09:27 صبح
دوست عزیز اول بگم من این کد رو امتحان نکردم و خودتون ببینید کار میکنه یا نه:
@echo off
set "cols=50"
set "lines=10"
mode con: cols=%cols% lines=%lines%
cls
:menu
rem Color 0F
Color 1F
cls
title Silent installer
echo [1] intall Acrobat Reader
echo [2] Install WinRAR archiver
echo [3] Install Firefox
echo [4] Install all files
echo.
echo [5] exit
echo.
set /p menuchoice= input key:
for %%a in (%menuchoice%) do (
if %%a == 1 goto Acrobat
if %%a == 2 goto WinRAR
if %%a == 3 goto Firefox
if %%a == 4 goto allfiles
if %%a == 5 goto exit
)
cls
:Acrobat
cls
Color 2F
echo.
echo Install Silent... (1-3)
echo.
echo Install Adobe Acrobat Reader
start /w x86\Soft\Adobe_Acrobat.exe
cls
goto menu
:WinRAR
cls
Color 2F
echo.
echo Install Silent... (2-3)
echo.
echo Install WinRAR archiver
start /w x86\Soft\WinRAR.exe
cls
goto menu
:Firefox
cls
Color 2F
echo.
echo Install Silent... (3-3)
echo.
echo Install Firefox
start /w x86\Soft\fiefox.exe
cls
goto menu
:exit
cls
Color 4F
echo.
@echo Exit Command Prompt
echo.
@pauseکار این کد باید به این صورت باشه که بتونید اعداد مختلف رو با فاصله وارد کنید: مثلاً: 5 2 1
خب اگه کار بکنه که خیلی خوبه.
ASHKANLAEI
شنبه 30 شهریور 1398, 09:32 صبح
راستی دوست عزیز شما برای عدد 4 بخشی نساختید؟
zirak58
شنبه 30 شهریور 1398, 09:48 صبح
راستی دوست عزیز شما برای عدد 4 بخشی نساختید؟
عدد 4 فعلا مهم نیس اونو بعدا میتونم ردیف کنم
کار این کد باید به این صورت باشه که بتونید اعداد مختلف رو با فاصله وارد کنید: مثلاً: 5 2 1
با فاصله هم کار نمیکنه
ASHKANLAEI
شنبه 30 شهریور 1398, 10:43 صبح
من امتحان کردم و کار کرد.
باید از حلقه for استفاده کنید.
که از طریق فاصله ها اعداد رو جدا میکنه.
zirak58
شنبه 30 شهریور 1398, 11:09 صبح
من امتحان کردم و کار کرد.
باید از حلقه for استفاده کنید.
که از طریق فاصله ها اعداد رو جدا میکنه.
بلدنیستم
ممنون میشم دستور for را در کدبالا برایم قراردهید.
ASHKANLAEI
شنبه 30 شهریور 1398, 11:48 صبح
ببینید این کد کار میکنه؟:
@echo off
set "cols=50"
set "lines=10"
mode con: cols=%cols% lines=%lines%
cls
:menu
rem Color 0F
Color 1F
cls
title Silent installer
echo [1] intall Acrobat Reader
echo [2] Install WinRAR archiver
echo [3] Install Firefox
echo [4] Install all files (don't use)
echo.
echo [5] exit
echo.
set /p menuchoice= input key:
for %%a in (%menuchoice%) do (
if %%a == 1 (
cls
Color 2F
echo.
echo Install Silent... (1-3)
echo.
echo Install Adobe Acrobat Reader
start /w x86\Soft\Adobe_Acrobat.exe
cls
)
if %%a == 2 (
cls
Color 2F
echo.
echo Install Silent... (2-3)
echo.
echo Install WinRAR archiver
start /w x86\Soft\WinRAR.exe
cls
)
if %%a == 3 (
cls
Color 2F
echo.
echo Install Silent... (3-3)
echo.
echo Install Firefox
start /w x86\Soft\fiefox.exe
cls
)
if %%a == 5 (
cls
Color 4F
echo.
@echo Exit Command Prompt
echo.
@pause
exit
)
)
zirak58
شنبه 30 شهریور 1398, 11:57 صبح
ببینید این کد کار میکنه؟
نه کار نمیکنه!
ASHKANLAEI
شنبه 30 شهریور 1398, 11:58 صبح
در کد قبلی هم از for استفاده کردم فقط یادم نبود که وقتی به بخش دیگه میره برمیگیرده به اول منو.
یعنی ورودی قبلی و در کل خود for پاک میشدند.
به همین خاطر کدتون رو ویرایش کردم و همۀ بخش ها رو منتقل کردم به همون قسمت منو (که نیازی به GoTo نباشه)
ASHKANLAEI
شنبه 30 شهریور 1398, 12:00 عصر
ببخشید ارور میده یا کار نمیکنه؟
zirak58
شنبه 30 شهریور 1398, 12:04 عصر
کار نمیکنه
حتی کلید 5 رو میزنم باید خارج بشه اما دستورات 1 2 3 را اجرا میکنه
ASHKANLAEI
شنبه 30 شهریور 1398, 12:09 عصر
ببخشید، مشکل این بود که در مراحل نصب، پرانتز چاپ میکردید!
آپدیت:
@echo off
set "cols=50"
set "lines=10"
mode con: cols=%cols% lines=%lines%
cls
:menu
rem Color 0F
Color 1F
cls
title Silent installer
echo [1] intall Acrobat Reader
echo [2] Install WinRAR archiver
echo [3] Install Firefox
echo [4] Install all files (don't use)
echo.
echo [5] exit
echo.
set /p menuchoice= input key:
for %%a in (%menuchoice%) do (
echo %%a
if %%a == 1 (
cls
Color 2F
echo.
echo Install Silent... ^(1-3^)
echo.
echo Install Adobe Acrobat Reader
start /w x86\Soft\Adobe_Acrobat.exe
cls
)
if %%a == 2 (
cls
Color 2F
echo.
echo Install Silent... ^(2-3^)
echo.
echo Install WinRAR archiver
start /w x86\Soft\WinRAR.exe
cls
)
if %%a == 3 (
cls
Color 2F
echo.
echo Install Silent... ^(3-3^)
echo.
echo Install Firefox
start /w x86\Soft\fiefox.exe
cls
)
if %%a == 5 (
cls
Color 4F
echo.
@echo Exit Command Prompt
echo.
@pause
exit
)
)
ASHKANLAEI
شنبه 30 شهریور 1398, 12:11 عصر
در ضمن، یادتون باشه که قبل از چاپ پرانتز، علامت ^ را بنویسید (حتماً و همیشه)
zirak58
شنبه 30 شهریور 1398, 12:16 عصر
خیلی خیلی خیلی ممنونم :قلب:
ایشاله هرچی از خدا میخوای بهت بده
بازم ممنون
ASHKANLAEI
شنبه 30 شهریور 1398, 12:17 عصر
خواهش میکنم بازم ببخشید که اطلاعات غلط چند بار دادم
چون من زیاد با cmd کار نمیکردم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.