1

Тема: CMD/BAT: интерактивный пакетный файл

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

2

Re: CMD/BAT: интерактивный пакетный файл

GrukhvinEV, ознакомьтесь с Правилами форума, прежде всего, с тем, как нужно оформлять заголовок темы. Я поправил Ваш пост.

Приведите образец «некоторого файла», укажите его кодировку. Заданный файл указывается параметром пакетного файла — я так понял?

3

Re: CMD/BAT: интерактивный пакетный файл

Спасибо. на счет "Заданный файл указывается параметром пакетного файла — я так понял?" я не знаю, вот есть условие задачи и ее надо решить, а что от меня хотят я и сам понять не могу, только начал изучать, поэтому и прошу помощи.
Файл Catalog.txt, кодировка ANSI ( В нем текст вот в таком формате):
Ivan user1
Egor user2
Petya user3

4

Re: CMD/BAT: интерактивный пакетный файл

GrukhvinEV пишет:

Файл Catalog.txt, кодировка ANSI

Может ли там быть кириллица?

GrukhvinEV пишет:
Ivan user1
Egor user2
Petya user3

«user1» — и где искать данный каталог? Если это домашний каталог — то должен быть полный путь, либо локальный, либо указывающий на сервер. Поясните.

5

Re: CMD/BAT: интерактивный пакетный файл

Нет, кириллицы там нет. Все каталоги находятся C:\Documents and Settings\
С Уважением.
Евгений.

6

Re: CMD/BAT: интерактивный пакетный файл

GrukhvinEV пишет:

...
вот есть условие задачи и ее надо решить, а что от меня хотят я и сам понять не могу,
...

Если Вам не понять свое "тех/задание", то другим - уж тем более.
Озвучьте все, что Вам известно по исходным условиям и требуемому результату.

WBR. Roman

7 (изменено: GrukhvinEV, 2011-11-24 15:50:46)

Re: CMD/BAT: интерактивный пакетный файл

Это первый мой скрипт. Разобрался. Необходимо написать bat файл который при запуске с параметром (prog.bat "1.txt") ну или другим каким то файлом,просматривал файл Catalog.txt в интерактивном режиме и задавал вопрос формата: "Скопировать пользователю Ivan файл 1.txt ?"
Пример содержания файла Catalog.txt:
Ivan user1
Egor user2
Petya user3

,где Ivan(Egor, Petya) - имя, а user1(user2, user3) - имена каталогов. Все файлы и каталоги лежат в  "C:\lab1\", то есть путь для Ivan будет "C:\lab1\user1"

Если да то программа копирует файлы. Если нет переходит к следующему пользователю, и задает вопрос:"Скопировать пользователю Egor файл 1.txt ?" и т.д.

Вот я написал почти все что требуется только немного некорректно работает, помогите исправить. Как правильно указать путь ? И вопрос у меня не верно задается.

@echo on
set f=%1
for /f "tokens=2*" %%i in (Catalog.txt) do (call :st "%%i" "%~p1")
: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))
pause

8

Re: CMD/BAT: интерактивный пакетный файл

А вот получилось все исправить! Теперь другая проблема, почему то после того как он задал три вопроса
1)"Скопировать пользователю Ivan файл 1.txt ?"
2)"Скопировать пользователю Egor файл 1.txt ?"
3)"Скопировать пользователю Petya файл 1.txt ?"
Он еще спрашивает "Скопировать пользователю 1.txt файл 1.txt ?"
Как исправить ? в чем проблема ?

@echo off
set f=%1
for /f "tokens=1,2*" %%i in (Catalog.txt) do (call :st "%%i" "%~p0%%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))
pause

9

Re: CMD/BAT: интерактивный пакетный файл

После цикла вставь - exit, чтобы лишний раз не выполнялась процедура - :st

10 (изменено: GrukhvinEV, 2011-11-24 17:14:04)

Re: CMD/BAT: интерактивный пакетный файл

Вот так ?

@echo off
set f=%1
for /f "tokens=1,2*" %%i in (Catalog.txt) do (call :st "%%i" "%~p0%%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))
exit

Если да, то не помогло.

11

Re: CMD/BAT: интерактивный пакетный файл

Нет, вот так:

@echo off
set f=%1
for /f "tokens=1,2*" %%i in (Catalog.txt) do (call :st "%%i" "%~p0%%j"  )
exit

: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))

12

Re: CMD/BAT: интерактивный пакетный файл

Спасибо! Помогло )