Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
1

Разработать программу для копирования заданного файла в домашние каталоги пользователей ПК

08.11.2011, 11:42. Просмотров 5269. Ответов 30
Метки нет (Все метки)

1. В некотором файле хранится список пользователей ПК и имена их домашних каталогов. Каждый пользователь и имя его каталога — в отдельной строке. Необходимо разработать программу, которая просматривает данный файл и в интерактивном режиме (командный файл «задает вопросы», а пользователь на них отвечает) задает вопрос — копировать текущему пользователю (в его домашний каталог) какой-либо заданный файл в качестве параметра или нет. Если «Да», то программа копирует файл.

Написал вот что, дальше чето ума не приложу че писать.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
for /f "tokens=2*" %%i in (Catalog.txt) do call:set "%%i"
:set 
echo Copy file 1.txt to user ?
choice /c:12
if errorlevel 2 goto Yes
if errorlevel 1 goto No
pause
:Yes
:No
echo No
Спасибо!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2011, 11:42
Ответы с готовыми решениями:

Задача отобразить имена, номера UID и домашние каталоги
Напишите скрипт, который найдет всех пользователей, принадлежащих к группам, имена которых были...

Разработать программу, производящую копирование заданного в командной строке файла
Здравствуйте, не могли бы помочь? Не могу разработать программу, производящую копирование заданного...

Разработать программу для вычисления значения заданного арифметического выражения
Разработать программу для вычисления: 1) значения заданного арифметического выражения Исходные...

Разработать программу для определения процента повторения заданного слова в тексте
люди помогите решить ! Завтра экзамен надо сдать лабу. Вот задача Разработать программу для...

Разработать иерархию не менее 2 классов, и программу Разработать программу для реализации игры пятнашки. Разработать 2-3
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и...

30
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
08.11.2011, 17:05 2
Windows Batch file
1
2
3
4
5
6
@echo off
set f=%1
for /f "tokens=2*" %%i in ('type "Catalog.txt"') do (call :st "%%i" "%%j")
:st
set /p q="Copy file %f% to user %1? "
if "%q%"=="yes" (echo Yes&copy /y %f% %2&exit /b) else (if "%q%"=="no" (echo No&exit /b) else (echo WTF^!^?&goto st))
P.S. Не знаю, что за Choice, мой cmd - тоже.
P.S.S. на счет 'type "Catalog.txt"' или просто "Catalog.txt", не знаю точно. Но выбираю, тот вариант который у меня точно работал.
P.S.S.S на счет echo Yes/No тоже необязательно, но у тебя в коде присутствовало, вот я и оставил.
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
08.11.2011, 17:11  [ТС] 3
Спасибо, щас буду разбираться! А вообще choice это отдельный экзешник, в ту же директорию помещаешь и он прекрасно работает ! Помогает вести диалог с пользователем! Если интересно почитай! Полезная инфа =))
Диалог с пользователем


Для диалога с пользователем можно использовать команду:
SET /P < имя переменной >=< текст >
при выполнении которой, на экран выдается текстовое сообщение < текст > и ожидается ввод ответного текста. Пример - выполним запрос пароля и присвоим его значение переменной "pset":

Windows Batch file
1
2
set /p pset="Enter password - " 
echo Password is - %pset%
Недостатком данного способа является невозможность продолжения выполнения командного файла при отсутствии ответа пользователя, поэтому очень часто вместо set используются сторонние программы. Одна из них - CHOICE.COM Скачать (1.7кб).
CHOICE выдает пользователю текстовое сообщение и ожидает выбора одного из заданных вариантов ответа (нажатия клавиш на клавиатуре). По результатам выбора формируется переменная ERRORLEVEL, значение которой равно порядковому номеру выбора. По умолчанию вариантов выбора два - Y или N. Если ответ равен Y - то ERRORLEVEL=1, если N - то ERRORLEVEL=2. Можно использовать более 2-х вариантов выбора и есть возможность задать выбор по умолчанию, когда пользователь за определенное время не нажал ни одной клавиши. Формат командной строки:

CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices - определяет допустимые варианты выбора. Если не задано - YN
/N - не выдавать варианты выбора.
/S - строчные и заглавные буквы отличаются.
/T[:]c,nn - Выбор по умолчанию равен "c" через "nn" секунд
text - Строка текста выводимая в качестве запроса

Создадим командный файл, демонстрирующий использование CHOICE. Он будет реагировать на нажатие клавиш "1","2",3" и "0" . При нажатии "0" выполняется завершение, а при нажатии остальных - сообщение пользователю. Если в течении 10 секунд ничего не нажато - завершение.
Windows Batch file
1
2
3
4
5
6
7
@ECHO OFF
:CHOICE
CHOICE /C:1230 /T:0,10 Ваш вариант
IF %ERRORLEVEL% EQU 4 GOTO EXIT
echo Ваш выбор=%ERRORLEVEL%
GOTO CHOICE
:EXIT
Теперь, используя CHOICE вы можете создавать командные файлы, логика работы которых может определяться пользователем.
1
Ris
08.11.2011, 17:32
  #4

Не по теме:

Предпочитаю использовать сторонние программы, только когда без них не обойтись. Тем более когда не для себя пишешь, а для всего форума.

1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
08.11.2011, 17:35  [ТС] 5
Если честно разобраться по учебнику тяжеловато, объясните пожалуйста как это работает ?
И за место %f% видимо и должен быть прописан который будет копироваться в качестве параметра в каталог к пользователю?
Если честно тут само задание правильно понять целая проблема...ну по крайней мере для начинающего =))
0
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
08.11.2011, 18:23 6
А по этим делам и учебники пишут ? по-моему вместо него, говоришь напиши в cmd команду help. И читай.

Если, я правильно тебя понял, программу запускают с параметром? типа, так: proga.bat "C:\file1.txt". Параметр, это то что идет за название программы. Те данные, которые ей передаются. В строке
Bash
1
set f=%1
, как раз переменной f присваивается значение первого параметра (%1). Я так сделал, потому что, нам надо использовать этот параметр в цикле call :st, а у цикла свои параметры, вот, например, первый параметр - call :st "%%i" "%%j". И если бы я там прописал %1, то вместо значения первого параметра файла(путь к файлу и его имя), я бы получил первый параметр цикла(имя пользователя).
P.S. Мой код рассчитан, на то что у тебя, в файле Catalog.txt лежат через пробел или TAB, имя пользователя и имя его домашней папки(кстати по-моему должно быть не только имя домашней папки, а еще и путь чтобы получилось, поэтому кинь пример содержания файла Catalog.txt, а то возникает аж 2 проблемы, если не знаю, что там и в каком формате лежит), и имя должно быть в кавычках, или не содержать пробелов.
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
08.11.2011, 21:14  [ТС] 7
Знаешь я и сам не знаю что там должно быть, вот есть задание
"В некотором файле хранится список пользователей ПК и имена их домашних каталогов. Каждый пользователь и имя его каталога — в отдельной строке. Необходимо разработать программу, которая просматривает данный файл и в интерактивном режиме (командный файл «задает вопросы», а пользователь на них отвечает) задает вопрос — копировать текущему пользователю (в его домашний каталог) какой-либо заданный файл в качестве параметра или нет. Если «Да», то программа копирует файл."
и его надо сделать и понимай как хочешь.... я вот сам сижу и гадаю чего от меня хотят. Мне бы понять само задание! Вот и выложил чтоб какой нибудь спец в виде тебя мне подсказал что делать =)) Ладно завтро опять буду разбираться =))
0
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
08.11.2011, 21:48 8
Ну если лежат только имена домашних папок, а путей к ним нет, то мб сойдет вот так: "%ALLUSERSPROFILE:~0,-9%" - это путь к папке где лежат домашние папки.
Windows Batch file
1
2
3
4
5
6
@echo off
set f=%1
for /f "tokens=2*" %%i in ('type "Catalog.txt"') do (call :st "%%i" "%ALLUSERSPROFILE:~0,-9%%%j")
:st
set /p q="Copy file %f% to user %1? (yes or no) "
if "%q%"=="yes" (echo Yes&copy /y %f% %2&exit /b) else (if "%q%"=="no" (echo No&exit /b) else (echo Write yes or no&goto st))
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
09.11.2011, 15:14  [ТС] 9
С трудом но я тут более менее разобрался что к чему.
Я думаю программа должна работать так, есть файл
Catalog.txt ( В нем текст вот в таком формате)
Ivan user1
Egor user2
Petya user3
(где Ivan,Egor,Petya- это пользователи и соответственно user1,user2,user3 это их каталоги.)
Программа должна задавать вопрос вот в таком формате: "Скопировать пользователю Ivan файл 1.txt?"
Где в файле 1.txt есть какой то текст, пусть будет "Параметр".
если мы отвечаем на вопрос "Скопировать пользователю Ivan файл 1.txt?" да, то я думаю файл Catalog.txt должен принять вид:
Ivan user1Параметр
Egor user2
Petya user3
Или я че то не понимаю ?
Как вообще понять вот это выражение "копировать текущему пользователю (в его домашний каталог) какой-либо заданный файл в качестве параметра или нет" что значит файл в качестве параметра ???
0
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
09.11.2011, 18:30 10
Блин. Почитай в интернете инфу про параметры, мб я плохо объясняю.
Я тебе уже писал, параметр, это те данные, которые передаются программе при запуске, вот таким способом: explorer.exe "C:\", где explorer.exe - это программа, "C:\" - это параметр. Запустишь так explorer.exe у тебя откроется окно проводника в папке "C:\". А файл в качестве параметра, это тоже что и "C:\", только не какие-то данные(в нашем случае, это путь к папке C:), а именно путь к файлу и его имя, например: "C:\1.txt". Например, команда attrib "C:\1.txt", введенная в строку окна CMD, даст результат: выведится на экран атрибуты этого файла("C:\1.txt"). Соответственно, могут быть несколько параметров, по-моему до 10, но это не важно. То есть, первый из них, является первым параметром, следующий - вторым, и так далее.

Идем дальше, копирование файла, это дублирование его, в другое место(папку), или с новым именем в ту же папку. То есть Копировать текущему пользователю в его домашний каталог какой-то либо заданный файл..., означает, скопировать файл, в домашнюю папку текущему пользователю, по твоему тексту, видно что, для "Ivan"'a его домашней папкой является папка - "user1". Для "Egor"'a - папка "user2".

Блин. Почитай в интернете инфу про параметры, мб я плохо объясняю.
Я тебе уже писал, параметр, это те данные, которые передаются программе при запуске, вот таким способом: explorer.exe "C:\", где explorer.exe - это программа, "C:\" - это параметр. Запустишь так explorer.exe у тебя откроется окно проводника в папке "C:\". А файл в качестве параметра, это тоже что и "C:\", только не какие-то данные(в нашем случае, это путь к папке C:), а именно путь к файлу и его имя, например: "C:\1.txt". Например, команда attrib "C:\1.txt", введенная в строку окна CMD, даст результат: выведится на экран атрибуты этого файла("C:\1.txt"). Соответственно, могут быть несколько параметров, по-моему до 10, но это не важно. То есть, первый из них, является первым параметром, следующий - вторым, и так далее.

Идем дальше, копирование файла, это дублирование его, в другое место(папку), или с новым именем в ту же папку. То есть Копировать текущему пользователю в его домашний каталог какой-то либо заданный файл..., означает, скопировать файл, в домашнюю папку текущему пользователю, по твоему тексту, видно что, для "Ivan"'a его домашней папкой является папка - "user1". Для "Egor"'a - папка "user2".
бл* дописал, а потом скопировал, в вметсо вставить о5 скопировать, все за*бало.
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
09.11.2011, 19:48  [ТС] 11
У самого голова уже опухла =)) С паскалем и то все намного проще оказалось чем здесь )))
Ладн завтро буду пробовать разбираться ))
0
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 329
20.11.2011, 08:49 12
Choice /?
Код
CHOICE [/C список] [/N] [/CS] [/T тайм-аут /D элемент] [/M текст]

Описание.
    Эта программа позволяет выбирать элемент из списка элементов
    и возвращает индекс выбранного элемента.

Параметры:
   /C    список        Создаваемый список выбираемых элементов.
                       Список по умолчанию "YN".
   /N                  Скрытие списка элементов в приглашении.
                       Перед приглашением выводится сообщение
                       и элементы остаются доступными для выбора.
   /CS                 Включение учета регистра при выборе элементов.
                       По умолчание в программе регистр символов не учитывается.
   /T    тайм-аут       Число секунд перед выбором элемента по умолчанию.
                       Допустимыми являются значения от 0 до 9999.
                       Если указан 0, отсутствует пауза перед выбором
                       элемента по умолчанию.
   /D    элемент       Элемент, выбираемый по умолчанию через nnnn секунд.
                       Символ должен присутствовать в наборе элементов
                       в параметре /C; значение nnnn задается в параметре /T.
   /M    текст         Сообщение, отображаемое перед
                       приглашением. Если не указано, программа
                       выводит только приглашение.
   /?                  Вывод справки по использованию.

   Примечание
   Переменная среды ERRORLEVEL получает значение индекса
   клавиши, соответствующей выбранному элементу. Первый элемент
   в списке возвращает значение 1, второй - 2 и т.д.
   Если пользователь нажимает клавишу, не соответствующую допустимому
   выбору, подается звуковой сигнал. Если обнаруживается ошибка,
   возвращается значение ERRORLEVEL 255. Если нажимаются клавиши
   CTRL+BREAK или CTRL+C, программа возвращает значение ERRORLEVEL 0.
   При использовании параметров ERRORLEVEL в пакетной программе их
   следует перечислять по убыванию.

Примеры:
   CHOICE /?
   CHOICE /C YNC /M "Y - Да, N - Нет, C - Отмена."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
   CHOICE /C ab /N /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
20.11.2011, 10:09  [ТС] 13
Это то понятно, а дальше то что? =))
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
20.11.2011, 13:37 14
Это то понятно, а дальше то что? =))
а вы батник из поста #2 запускали? он работает?
вообще у вас должен быть текстовый файл "Catalog.txt" вот такой:
Код
Ivan user1
Egor user2
Petr user3
и три каталога в текущей папке: user[1-3], дальше запускаете батник из поста №2 с параметром напр.: "proga.bat Catalog.txt" и отвечаете на вопрос "yes"/"no" и смотрите скопировался ли файл "Catalog.txt" в те папки где вы ответили "yes"
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
20.11.2011, 17:56  [ТС] 15
Да дело то не в этом. Я не могу понять само условие задачи, вот "копировать текущему пользователю (в его домашний каталог) какой-либо заданный файл в качестве параметра или нет. Если «Да», то программа копирует файл", вот как это должно выглядеть ? чего они от меня хотят ? Если бы не было фразы "в качестве параметра" то было бы предельно ясно. Что есть файл есть каталог и иго туда копируем и все, просто и понятно. А вот что значит скопировать файл в качестве параметра в домашний каталог это мне не понятно! Как это вообще выглядеть то должно ? Это просто мы присваиваем каталогу какой то параметр, тогда причем здесь слово файл ? Или есть какой то файл к примеру 1.txt в котором содержится наш параметр, и мы его каким то образом применяем к каталогу? Вот это мне объясните на пальцах, что от меня хотят ? Желательно хотя бы с небольшим примером как это все выглядит а дальше я сам!
0
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 329
20.11.2011, 18:07 16
Prog.exe -Parametr
Bat.bat "1.txt"

Вот что за параметр.
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
20.11.2011, 18:11  [ТС] 17
Блин, может это я конечно такой медленный. Но что за экзешник ? у мя нет ни какой программы есть только имена каталогов и какой то параметр, который то ли присвоить надо, то ли он есть в каком то файле и его надо скопировать куда то.
0
Tornament
67 / 67 / 2
Регистрация: 28.10.2010
Сообщений: 329
20.11.2011, 18:14 18
http://www.cyberforum.ru/post2191439.html

1. Величина, входящая в математическую формулу и сохраняющая постоянное значение в пределах одного явления или для данной частной задачи, но при переходе к другому явлению, к другой задаче меняющая свое значение (мат.).


ГУГЛИ, параметр.

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

"""" с параметром напр.: "proga.bat Catalog.txt" """"" или "proga.bat 1.txt"
1
GrukhvinEV
25 / 25 / 2
Регистрация: 08.11.2011
Сообщений: 284
20.11.2011, 18:26  [ТС] 19
Да это то я понял ))) Не понятно какие файлы у меня должны быть и что они должны делать ? вот к примеру я все написал программу, есть файл catalog.txt ( в котором первое имя egor и его каталог user1), программа меня спрашивает "Скопировать пользователю egor в его домашний каталог user1 файл в качестве параметра ?" и что должно дальше произойти то, если я отвечу "да"?
0
Ris
792 / 174 / 9
Регистрация: 11.01.2011
Сообщений: 543
20.11.2011, 20:06 20
Ну и сделай на русской языке, вопрос точно также составлен.
0
20.11.2011, 20:06
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 20:06

Разработать программу, которая для заданного месяца, по закачанным файлам, делала отчет
Есть 10 список файлов актов за месяц. Задача. Разработать программу, которая для заданного...

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

Разработать программу, которая для заданной строки s: удваивает каждое вхождение заданного символа x
Разработать программу, которая для заданной строки s: удваивает каждое вхождение заданного символа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru