Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 21:17   #1
Nonon
Новичок
Джуниор
 
Регистрация: 22.11.2010
Сообщений: 3
По умолчанию CMD-файл

Здравствуйте все.
Вот такой возник у меня вопрос.
Задание: написать CMD-файл, резервного копирования файлов из текущего каталога на носитель, задаваемый переменной окружения TMPDISK, в каталог, задаваемый переменной окружения TMPDIR, без перезаписи существующих там файлов. Шаблоны файлов передаются через список параметров.
Ок, напишем,вот что вышло:
REM носитель
set tmpdisk=f:\
REM Каталог приемник
SET tmpdir=33\
REM шаблон копируемых файлов например *.bat
set lis=*.*
copy %lis% %tmpdisk%%tmpdir%/v
Но препод ругается, что "надо копировать КАЖДЫЙ файл и анализировать код возврата с выводом сообщения на экран успешно или нет произошло копирование". Подскажите, будьте добры, как быть.
Nonon вне форума Ответить с цитированием
Старый 22.11.2010, 22:41   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

лень сейчас писать готовый код, но, думаю,
что Ваш преподаватель добивается от Вас
использования оператора for ...
что-то типа такого:
for %%f in (*.*) do call s1.cmd %%f
Ну, разумеется, вместо вызова s1.cmd должно быть ваше копирование с проверкой...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2010, 19:22   #3
Nonon
Новичок
Джуниор
 
Регистрация: 22.11.2010
Сообщений: 3
По умолчанию

Да, спасибо, так я ему и писала:
REM носитель
set tmpdisk=f:\
REM Каталог приемник
SET tmpdir=33\
REM шаблон копируемых файлов например *.bat
set list=*.*
For %%f IN ("*.*") do copy %list% %tmpdisk%%tmpdir%/v%%f

Но ответ был, "команда
copy %list% %tmpdisk%%tmpdir%/v%%
может закончиться неуспешно, надо проверить ее код возврата командой IF".
Подскажите, пожалуйста, как это можно реализовать?
Nonon вне форума Ответить с цитированием
Старый 23.11.2010, 20:02   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) справочник комадной строки доступен в Windows
Цитата:
Код:
XP Prof "hh ntcmds.chm"  
XP home "hh ntcmds.chm::/ntcmds.htm" 
w2k "hh windows.chm::/ntcmds.htm"
то, что в кавычках написано, написать и выполнить в командной строке.

2) думаю, что Вам поможет анализ возвращаемого ERRORLEVEL
if [not] errorlevel число команда
Цитата:
errorlevel число
Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа.

примерно так можно решить Вашу задачу:
Код:
@echo off

REM носитель
set tmpdisk=f:\
REM Каталог приемник
SET tmpdir=33\
REM шаблон копируемых файлов например *.bat
set list=*.pas


for %%c in (%list%) do (
    set "file=%%c"
    set "folder=%tmpdisk%%tmpdir%"
    call :MyCopy
)
goto :eof

:MyCopy
@echo off
if exist "%folder%%file%" (
      echo "File %folder%%file% already exist."
      goto :cont
      )
rem echo "coping file: %file% to %folder%%file%"
COPY "%file%" "%folder%%file%" > nul
IF ERRORLEVEL 1 echo "Error while copying file: %file%"
:cont
goto :eof
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2010, 20:54   #5
Nonon
Новичок
Джуниор
 
Регистрация: 22.11.2010
Сообщений: 3
По умолчанию

Большое спасибо Вам за такой содержательный ответ.
Nonon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cmd Закачать файл Terikon Операционные системы общие вопросы 2 14.08.2010 00:35
cmd sir.andrey Помощь студентам 3 20.06.2010 11:51
cmd cold11 Помощь студентам 0 13.03.2010 18:23
cmd to textbox - C# TaTT DoGG Общие вопросы .NET 8 26.11.2008 18:16