Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.96
isebolit
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
#1

Сортировка файлов по расширению - CMD/BAT

16.10.2012, 13:19. Просмотров 3931. Ответов 6
Метки нет (Все метки)

Здравствуйте, уважаемые пользователи, появилась проблема с написанием bat файла. Задание состоит в следующем: произвести сортировку всех файлов текущего каталога в папки, содержащие расширения файлов. Т.е. если у меня в каталоге имеются файлы с расширением .doc .cpp .dll то после запуска батника в текущем каталоге появятся папки doc cpp и dll, содержащие файлы соответствующих расширений. Имя текущего каталога должно передаваться в качестве параметра. Собственно я дошел до следующего решения, но работает оно только если его вручную прописывать в командной строке:
Bash
1
2
set /P path=%CD%
for %i in (*.*) do (md %~xi move *%~xi %~xi)
При запуске сего кода из bat файла в любом случае приходится вводить текущий каталог, после чего прописываю цикл до команды *%~xi после чего, в командной строке возникает вопрос: Продолжить? Если дописать *%~xi %~xi, то все выйдет корректно. У кого будут какие мысли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка файлов по расширению (CMD/BAT):

Сортировка имен файлов по расширению - CMD/BAT
Здравствуйте! Помогите, не могу решить задачку: Создать командный файл выводящий содержимое от 1 до 15 директорий перечисленных в...

Перемещение файлов по расширению - CMD/BAT
Доброго времени суток. Очень нужна Ваша помощь. Требуется создать bat-ник, который будет ПЕРЕМЕЩАТЬ все файлы с расширением LOG, из...

Распределение файлов по их расширению - CMD/BAT
Всем привет!) Спасайте!! Нужно создать батник который распределяет разные файлы в папке по расширению)) Например в папке word, exel и т.д....

Применить сжатие файлов по расширению - CMD/BAT
Приветстую К примеру есть кусок скрипта for %%A in (D:\TMP) do (if exist "%%~A" (for %%A in ("%%~A\*.png") do (compact /c...

Мониторинг файлов по дате создания и расширению - CMD/BAT
Здравствуйте, есть задача мониторить папку на предмет наличия файлов с расширениями, допустим .txt, .doc, .jpg которые залежались дольше 5...

Перенос файлов по расширению (более 500), сохраняя структуру каталогов - CMD/BAT
Добрый день. Скрипт должен перемещать файлы по расширению (больше 500) сохраняя структуру каталогов Скрипт есть только для одного...

6
isebolit
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
17.10.2012, 13:33  [ТС] #2
Попробовал сделать с записью в текстовый файл всех расширений, но не могу представить как потом исходя из этого организовать нужную мне вещь, если кого интересует код, вот он:
Bash
1
2
3
4
5
set %a% = 0
for /f %%i in ('dir /b') do (for /f %%v (res.txt) do if (%%~xi == %%v) %a% = 1
                if not %a% == 1 echo %%~xi >> res.txt
                %a% = 0)
for /f %%v (res.txt) do xcopy %%v
Неужели ни у кого нет идей?
0
Dragokas
Эксперт WindowsАвтор FAQ
16242 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
17.10.2012, 15:16 #3
path - плохое имя для пользовательской переменной (в системе уже есть одна - проверьте через свойства моего компьютера, "переменные среды", что Вы ее не повредили).

например, > ... пишем c:\c++

Bash
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal enabledelayedexpansion
set /P folder="%CD%> "
for /f "delims=" %%a in ('dir %folder% /b /a:-d') do (
  set newF=%%~xa
  rem урезаем левый символ (точку) расширения
  set newF=%folder%\!newF:~1!
  if not exist "!newF!" md "!newF!"
  copy /y "%folder%\%%~a" "!newF!\"
)
1
isebolit
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
17.10.2012, 17:15  [ТС] #4
Хм... немного исправил Ваш код под свои нужды:
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal enabledelayedexpansion
set /P folder="%CD%> "
for /f "delims=" %%a in ('dir %folder% /b /a:-d') do (
  set newF=%%~xa
  rem урезаем левый символ (точку) расширения
  set newF=%folder%\!newF:~1!
  if not exist "!newF!" md "!newF!"
  move /y "%folder%\%%~a" "!newF!\"
)
Теперь у меня файлы не просто копируются, а переносятся в нужные каталоги (прошу прощения за неверно сформулированную задачу), но встала следующая проблема. Батник переносит сам себя. Пробовал сделать маску, но ведь получится что сделаю я её для всех файлов с расширением .bat, а нужно чтоб он в каталоге оставлял сам себя. Может быть есть другой путь? Можете дать направление, в котором стоит копать
0
Dragokas
Эксперт WindowsАвтор FAQ
16242 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
17.10.2012, 20:32 #5
Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
setlocal enabledelayedexpansion
set /P folder="%CD%> "
for /f "delims=" %%a in ('dir %folder% /b /a:-d') do (
  if "%%~a" neq "%~0" (
    set newF=%%~xa
    rem урезаем левый символ (точку) расширения
    set newF=%folder%\!newF:~1!
    if not exist "!newF!" md "!newF!"
    move /y "%folder%\%%~a" "!newF!\"
))
0
isebolit
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 14
23.10.2012, 08:52  [ТС] #6
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal enabledelayedexpansion
set /P folder="%CD%> "
for /f "delims=" %%a in ('dir %folder% /b /a:-d') do (
  if "%%~na" neq "%0" (
    set newF=%%~xa
    set newF=%folder%\!newF:~1!
    if not exist "!newF!" md "!newF!"
    move /y "%folder%\%%~a" "!newF!\"
))
Так будет правильнее
0
Dragokas
Эксперт WindowsАвтор FAQ
16242 / 6941 / 834
Регистрация: 25.12.2011
Сообщений: 10,722
Записей в блоге: 16
23.10.2012, 13:17 #7
Неа, вот так:
Bash
5
if "%%~a" neq "%~nx0" (
Имя может попасть одинаковое с батником, а вот расширение добавить нужно обязательно.
1
23.10.2012, 13:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 13:17
Привет! Вот еще темы с ответами:

Выборка файлов по расширению, упаковка, отправка адресатам, ведение лога, резервное копирование - CMD/BAT
Всем привет Сделал следующий батник Он ищет в папке файлы aaa0000bbb*.CNG, архивирует их в aaa0000bbb*.zip, отправляет адресату, ведёт...

Запрет записи файлов в папку, по расширению - Администрирование Windows
Добрый день. Прошу подсказать скрипт или bat выполняющий : запрет записи файлов в указанную папку с определенным расширением, ОС Win 7.

Сортировка большого количества файлов по папкам, созданным по части названия файлов - CMD/BAT
Здравствуйте, уважаемые! Сразу к делу. Имеется папка, в ней уже более 500.000 файлов, и с каждым днем все больше на 3-4 тысячи....

Сортировка файлов - CMD/BAT
Имеются обновления офиса типа KB2288613-USP10.msp в папках new и old. Необходимо первые значения файлов (KB2288613) папки new cравнить с...


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

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

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