Консультация № 172778
30.09.2009, 19:49
0.00 руб.
0 8 2
Здравствуйте,ув. эксперты!
Требуется помощь в решении задачи:
Написать командный фаил .bat, выбирающий из папки, указанной пользователем все фаилы, кроме одного, указанного в командной строке.

Обсуждение

Неизвестный
30.09.2009, 20:01
общий
Каком смысле "выбирающий"?
Неизвестный
30.09.2009, 20:01
общий
Непонятно что значит "выбирающий"? А дальше с выбранными файлами что делать?
Неизвестный
30.09.2009, 20:10
общий
Незнаю препод так и сказал=)))
Вот сам и незнаю что делать...
думаю скопировать в каталог указанный пользователем в К.с. все фаилы кроме одного...
Неизвестный
30.09.2009, 21:04
общий
это ответ
Здравствуйте, Серега717.
Этот скрипт ищет файлы в указанном каталоге (первый параметр) и выкидывает из списка указанное имя (второй параметр)

Код:
@dir /b /w /A-D "%1\*.*" | findstr /V /I "^%2$"


Правда, встроить его для работы без временных файлов у меня не получилось. Пытался сделать через FOR - там так просто не работает. Может, другой эксперт знает как.
Неизвестный
30.09.2009, 21:08
общий
Серега717:
Мой ответ выводит список файлов. А вот если нужна какая-то обработка, то в лучшем случае - выводить это в файл, и скармливать файл другой команде. Может, кто-то напрямую решит. Только там писанины должно быть гораздо больше.
Неизвестный
30.09.2009, 22:29
общий
Небольшое пояснение можно?
/A-D что это значит?
давно
Посетитель
7438
7205
01.10.2009, 12:51
общий
это ответ
Здравствуйте, Серега717.
Например, так. Причем, можно давать и длинные имена в кавычках
Код:
@echo off
:Первый параметр - путь где ищем
:Второй параметр - имя файла
:Третий параметр - путь куда копируем все файлы, кроме заданного
:(если 3-й не задан, то в текущую папку)

set PP=%~1
set FF=%~2
set KUDA=%3
for %%f in ("%PP%\*.*") do call :oper "%%f"
set PP=
set FF=
set KUDA=
goto end

:oper
if "%~nx1" == "%FF%" goto end
echo %1
copy %1 %KUDA% /y

:end
Для полноты, надо бы еще добавить проверку на корректность параметров
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
01.10.2009, 15:33
общий
Серега717:
Это ключи команд. Просмотреть их можно так: dir /?
Ключи dir по порядку:
без дополнительного текста
только имена
исключить каталоги (т.е. без атрибута "каталог")

ключи findstr
кроме совпадающих
игнорировать регистр
А имя окружено значками начала и конца, чтобы только переданную фразу распознавал.
Форма ответа