Войти

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


Veseliy
29-02-2012, 09:51
Написать пакетный файл, который будет копировать из текущего каталога все файлы с некоторым расширением, кроме одного файла, указанного в качестве второго параметра командной строки, в каталог, указанный первым параметром. Если имя каталога, в который должно производиться копирование, не задано, то вывести сообщение об этом и прервать выполнение файла

вот что навоял:

@Echo Off
If '%1==' (Echo "Не указана папка для копирования"
GoTo :Eof)

xcopy *.txt %1\
If Not %ErrorLevel%==0 (
Echo Ошибка при копировании
Pause
GoTo :Eof
)

не понимаю как выполнить вот это условие: кроме одного файла, указанного в качестве второго параметра командной строки

Foreigner
29-02-2012, 22:03
Veseliy,

@echo off
1>nul chcp 1251

:: Проверяем наличие параметров
if "%~2"=="" echo Заданы не все параметры && goto:eof

:: Проверяем валидность первого параметра, на случай если указан существующий файл вместо папки.
if exist %1 2>nul pushd %1 && popd || (

echo Папка-назначение задана неверно, есть файл с таким же именем
goto:eof

)

:: Копируем файлы, если не существует папка-назначение, то она создастся

2>nul md %1
for /f "tokens=*" %%i in (' dir /b /a-d *.txt ') do if not "%%i"=="%~2" copy "%%i" %1

1>nul chcp 866




© OSzone.net 2001-2012