Войти

Показать полную графическую версию : [решено] Выбор из списка с выводом на экран. Можно такое написать?


luda-chel
24-05-2014, 20:26
Здравствуйте Всем!!!! Подскажите как можно в бат файле прописать следующее:
1.Заходим на диск в сети.
2. Из множества папок выбрать нужную.
3. Записать к себе на диск.
(это мне необходимо для автоматизации установки программы. Но в зависимости от роли пользователя ему нужна для работы программы только 1 папка). Подробнее:
Чтобы во время выполнения бат файла выводилось на экран:
"Выберите нужную цифру".
И предлагалось список:
1 - ПапкаA
2 - ПапкаВ
3 - ПапкаС и т.д. список небольшой.
И я с экрана вводила цифру нужной мне папки. Например после вопроса ввожу цифру 2.
Тогда программа идет в "ПапкаВ" и оттуда берет файл и пишет его на диск пользователя.
Начало (если зайти удаленно на комп пользователя):
mkdir c:\АРМ - создаст на диске С папку АРМ
xcopy "c:\2" "c:\АРМ" /e/c/h/n/y/ где c:\2 - откуда берет и куда пишет: c:\АРМ
далее нужно зайти в сеть на сервер в указанную директорию и выбрать там папку нужную для пользователя, т.е. сделать то что я пыталась обяъснить выше.
Кто нибудь может помочь новичку!!!! ОЧЕНЬ ОЧЕНЬ нужна ПОМОЩЬ!!!

Iska
25-05-2014, 01:48
Чтобы во время выполнения бат файла выводилось на экран:
"Выберите нужную цифру".
И предлагалось список:
1 - ПапкаA
2 - ПапкаВ
3 - ПапкаС и т.д. список небольшой. »
Choice (http://technet.microsoft.com/en-us/library/cc732504.aspx)

ratibor79
25-05-2014, 06:27
luda-chel,
А еще можно воспользоваться поиском и найти вот такую тему (http://forum.oszone.net/thread-278434.html)

firstarey
26-05-2014, 08:15
ну или вот то что написали Вам товарищи Iska и ratibor79:

@Echo off

:m1
cls
Echo ‚лЎҐаЁвҐ Їа®Ја*¬¬г:
Echo.
Echo 1 - Џа®Ја*¬¬* 1
Echo 2 - Џа®Ја*¬¬* 2
Echo 3 - Џа®Ја*¬¬* 3

echo.
Set /p choice="‚*и ўлЎ®а: "
if not defined choice goto m1
if "%choice%"=="1" (
echo ваш код
echo ваш код
)
if "%choice%"=="2" (
echo ваш код
echo ваш код
)
if "%choice%"=="3" (
echo ваш код
echo ваш код
)
Echo.
Echo ЌҐ Їа*ўЁ«м*® ᤥ«** ўлЎ®а §*¤**Ёп
Echo.
Echo.
goto m1
pause >nul

вот еще один интересный вариант - вызывает ОКНО выбора папки:

@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
1^|more`
) do set sFolderName=%%i

chcp %sPrevCP% >nul

if defined sFolderName (
echo Выбрана папка: %sFolderName%
) else (
echo Папка не была выбрана.
)
pause

Georgio
26-05-2014, 13:46
И я с экрана вводила цифру нужной мне папки. Например после вопроса ввожу цифру 2.
Тогда программа идет в "ПапкаВ" и оттуда берет файл и пишет его на диск пользователя. »



Если этот файл в этих папках один, то можно так:

@echo off
:#
chcp 1251>nul
for %%i in (
"1 - ПапкаA"
"2 - ПапкаВ"
"3 - ПапкаС"
) do (
chcp 866>nul
echo %%~i
chcp 1251>nul
for /f "tokens=1* delims=- " %%j in (%%i) do (
set "%%j=copy "D:\%%k" "C:\some_folder""
)
)
echo.
echo Enter the number of the folder.
echo.
set /p number=
for /l %%i in (1 1 3) do (
if "%%i"=="%number%" (
set flag=true
)
)
if defined flag (
cls
setlocal enabledelayedexpansion
!%number%!>nul&& (
endlocal
echo Done! Press any key to exit.
)
) else (
cls
echo Error! Repeat!
echo.
goto:#
)
pause>nul
exit /b


Если в этих папках больше одного файла, но нужно копировать одноименные файлы, то замените строку set "%%j=copy "D:\%%k" "C:\some_folder"" на строку set "%%j=copy "D:\%%k\some_file" "C:\some_folder"".

luda-chel
27-05-2014, 17:48
Ух ты!!! Спасибо ВСЕМ))))!!! Всю информацию взяла! Буду пробовать. На работе не всегда удается интернет открыть. О результате отпишусь))))




© OSzone.net 2001-2012