Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 3
Регистрация: 19.03.2015
Сообщений: 207

Создание папок и перемещения туда файлов

22.01.2018, 15:56. Показов 2409. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть файлы с названием к примеру 30Января2017.dox и надо чтобы папка создавалась 2017.01.30 таких файлов много разного года и разного месяца и чтобы эти файлы туда переместились
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2018, 15:56
Ответы с готовыми решениями:

Скрипт перемещения файлов и папок пользователя с профиля в профиль
Добрый день! Нужна помощь в написании скриптов. Задача скрипта №1: Пользователь запускает скрип от имени администратора, Появляется окно...

Создание подкаталогов и перемещение туда файлов
Здравствуйте, возникла проблема с лабой, вообще не понимаю как это делать. Помогите пожалуйста. Вот задание: Для каждого из файлов,...

Создание папки и добавление туда файлов
Пытаюсь сделать так, чтобы после ввода имени текстового файла и нажатии на кнопку, создавались папка, файл и последний сохранялся в этой...

9
 Аватар для vavun
10593 / 5556 / 865
Регистрация: 07.04.2013
Сообщений: 15,660
22.01.2018, 16:27
Для первого января файл будет называться 01Января2017.dox или 1Января2017.dox ?

Добавлено через 6 минут
А вообще, выполните вот это, чтобы мы имени представление, что у вас там лежит и как называется
Code
1
dir /b /s /a:-l-d-h "D:\Папка с файлами">> D:\FILES.txt
FILES.txt пришлите сюда
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.01.2018, 05:45
Цитата Сообщение от dobrotiu Посмотреть сообщение
к примеру 30Января2017.dox и надо чтобы папка создавалась 2017.01.30
из этого следует что для каждого файла (если такого же расширения) должна создаваться своя папка, исключением будет, если не равны имена по месяцу, например файлы 22март2017.txt и 22марта2017.txt попадут в одну папку 2017.03.22 (туда же 22март2017.doc)

тестировал на однотипных файлах:
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
09Февраля2017.txt
10Апреля2017.txt
15Ноябрь2017.txt
1Апрель2017.txt
1Января2017.txt
22Март2017.txt
22Марта2017.txt
2Март2017.txt
2Января2017.txt
30Января2017.txt
3Апрель2017.txt
5Ноября2017.txt
6Ноября2017.txt
8Февраль2017.txt


код:
(сохранить в кодировке 866 - обязательно!)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
set "d1=C:/Papka"
set "d2=C:/Out"
 
setlocal enabledelayedexpansion
 for %%a in (Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь) do set /a n+=1& set "$_!n!=%%a"
 if not exist "%d2%" md "%d2%"
 for /f "delims=" %%a in ('dir /a-d/b/s "%d1%"') do set "nf=%%~na"& call :cp "%%a" "%d2%"
endlocal
pause& exit
 
:cp
 set "yyyy=%nf:~-4%"& echo %nf:~1,1%|>nul findstr "[^0-9]" && (set "dd=%nf:~,1%"& set "MM=%nf:~1,-4%") || (set "dd=%nf:~,2%"& set "MM=%nf:~2,-4%")
 for /f "tokens=2* delims=_=" %%a in ('set $_') do (
  set "#MM=0%%a"& set "nMM=%%b"
  echo %MM%|>nul findstr !nMM:~,-1!. && ((if not exist "%~2/%yyyy%.!#MM:~-2!.%dd%" md "%~2/%yyyy%.!#MM:~-2!.%dd%")& >nul copy "%~1" "%~2/%yyyy%.!#MM:~-2!.%dd%")
 )
exit /b
Добавлено через 7 минут

Не по теме:

код можно будет упростить, если маска месяца одинаковая, а если и лидирующий 0 есть. то вообще идеально.

0
24.01.2018, 13:25
 Комментарий администратора 
Этот раздел называется CMD/BAT.
Все решения на PowerShell, Perl и прочем будут удаляться, а авторы наказываться.
0
0 / 0 / 3
Регистрация: 19.03.2015
Сообщений: 207
24.01.2018, 16:13  [ТС]
там через ноль
0
0 / 0 / 3
Регистрация: 19.03.2015
Сообщений: 207
24.01.2018, 16:28  [ТС]
Блин не правильно как-то сначала описал
вот как выглядят файлы
Миниатюры
Создание папок и перемещения туда файлов  
0
0 / 0 / 3
Регистрация: 19.03.2015
Сообщений: 207
24.01.2018, 23:10  [ТС]
Там проблема, если такие название то папки создаются не правильно, как сделать здесь чтобы только до первой точки


Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
set "d1=C:/Papka"
set "d2=C:/Out"
 
setlocal enabledelayedexpansion
 for %%a in (Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь) do set /a n+=1& set "$_!n!=%%a"
 if not exist "%d2%" md "%d2%"
 for /f "delims=" %%a in ('dir /a-d/b/s "%d1%"') do set "nf=%%~na"& call :cp "%%a" "%d2%"
endlocal
pause& exit
 
:cp
 set "yyyy=%nf:~-4%"& echo %nf:~1,1%|>nul findstr "[^0-9]" && (set "dd=%nf:~,1%"& set "MM=%nf:~1,-4%") || (set "dd=%nf:~,2%"& set "MM=%nf:~2,-4%")
 for /f "tokens=2* delims=_=" %%a in ('set $_') do (
  set "#MM=0%%a"& set "nMM=%%b"
  echo %MM%|>nul findstr !nMM:~,-1!. && ((if not exist "%~2/%yyyy%.!#MM:~-2!.%dd%" md "%~2/%yyyy%.!#MM:~-2!.%dd%")& >nul copy "%~1" "%~2/%yyyy%.!#MM:~-2!.%dd%")
 )
exit /b
Добавлено через 5 часов 11 минут
очень надо, я просто в этом вообще не шарю, а надо
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
25.01.2018, 01:06
dobrotiu,
во-первых
нельзя использовать дату изменения? (Совпадает же смотю)
во-вторых
привели пример из кучки одного и того же, а важно это:
не будет вместо Август - Августа (август, августа) ?
лидирующий 0 строго везде или есть варианты ?

Цитата Сообщение от dobrotiu Посмотреть сообщение
как сделать здесь чтобы только до первой точки
Windows Batch file
1
2
3
...
for /f "delims=." %%a in ('dir /a-d/b/s "%d1%"') do set "nf=%%~na"...
...
0
0 / 0 / 3
Регистрация: 19.03.2015
Сообщений: 207
25.01.2018, 17:10  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
Август
будет только август, лидирующий 0, теперь проблема началась что он не запихивает туда файлі

Добавлено через 3 минуты
Цитата Сообщение от alpap Посмотреть сообщение
нельзя использовать дату изменения? (Совпадает же смотю)
да можно, и оно лучше будет

Добавлено через 3 часа 13 минут
а как по дате изменения это сделать, не могу найти
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
26.01.2018, 01:58
dobrotiu,
вот по дате создания (по дате изменения - убрать /tc из-под dir)
и не забыть сохранить в кодировке 866!
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
set "d1=papka"
set "d2=out"
 
pushd "%d1%"
 for /f "tokens=1,3*" %%a in ('dir /a-d/tc^|findstr /rc:"^[^ ]"') do set "tc=%%a"& call :mv "%%c" "%d2%" "%%tc:~6%%.%%tc:~3,2%%.%%tc:~0,2%%"
popd
pause& exit
 
:mv
 (if not exist "%~2\%~3" md "%~2\%~3")& >nul move "%~1" "%~2\%~3"
exit /b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2018, 01:58
Помогаю со студенческими работами здесь

Создание папок по имени файлов и перемещение этих файлов в созданные папки
Господа, прошу помощи. В батниках полный ноль Имеется папка с множеством файлов, скриншот во вложении Эти файлы относятся к...

Создание папок с именами заданных файлов и перемещение этих файлов в созданные папки
Подскажите пожалуйста как по названиям файлов txt создать папки и положить в каждую из папок файл с таким же названием.

Создание папок по цифровому названию файлов и перенос этих файлов в созданные папки
Доброго времени суток. Необходим БАТ файл. Что имеем: Общую папку с файлами типа (A0010061609.DBF, A0010061609.PRN, A0010061609.SB,...

Сравнение файлов в папке и создание папок с именами файлов
Нужно пройтись по папке, если есть картинка с названием, но нет папки с таким же названием, создать папку с названием картинки и перенести...

Outlook Vba/ Создание папки по названию темы и выгрузка туда прикрепленных файлов к письму
Доброго времени суток, помогите решить следующую задачу. В оутлуке создана папка, куда я скидываю письма. таких писем порядка ста штук. в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru