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

Расчёт дат для их использования в именах файлов и папок при переименовании

30.07.2014, 06:44. Показов 5223. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый!!!
мне нужна помощь, подскажите как написать БАТНИК, что бы можно было копировать одну папку в тот каталог и что бы она еще переименовывалась с "01022014" на "02022014" в ней есть файл с именем и расширением "КУЛ.201" и что бы и его тоже можно было переименовать на "КУЛ.202" если конечно это возможно
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2014, 06:44
Ответы с готовыми решениями:

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

Notepad++ Кракозябры в русских именах файлов и папок
Народ. Вроде пользуюсь Notepad++ уже достаточно давно, но впервые столкнулся вот с какой траблой. Если папка или файл в имени имеют русские...

Наличие кириллических символов в именах папок и файлов воспринимается как синтаксическая ошибка
Помогите пожалуйста решить следующую проблему: Есть локальный компьютер (Windows 7x64), в нем открываю cmd.exe, проверяю кодировку:...

22
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
30.07.2014, 07:06
можно конечно

написать небольшую прогу (например на Java)
и запихать в батник ее запуск
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28047 / 15783 / 983
Регистрация: 15.09.2009
Сообщений: 67,753
Записей в блоге: 78
30.07.2014, 07:44
Базар нет, идешь в раздел https://www.cyberforum.ru/cmd-bat/ и читаешь, подобных примеров там есть.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.07.2014, 15:02

Не по теме:

Цитата Сообщение от Wado-Ru Посмотреть сообщение
можно конечно
написать небольшую прогу (например на Java)
и запихать в батник ее запуск
Или написать небольшой скрипт на батнике
и запихать его запуск в JAVA. :)



Добавлено через 10 минут
Базар нет, имена всегда именно такие или что-то меняется?
Какой критерий - переименование первых 2 цифр? Или это инкремент +1 ?
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
30.07.2014, 16:00
Цитата Сообщение от Dragokas Посмотреть сообщение
Или написать небольшой скрипт на батнике
и запихать его запуск в JAVA.
вопрос абстрактный
но сарказм все-равно не понял))
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.07.2014, 16:31
Wado-Ru, смысл в том, что для батника это вполне рядовая задача.
Нет необходимости привлекать другие скриптовые языки или компилируемые ЯП.
1
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
30.07.2014, 19:31
Dragokas, понял.
0
0 / 0 / 0
Регистрация: 28.07.2014
Сообщений: 2
01.08.2014, 08:52  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Базар нет, имена всегда именно такие или что-то меняется?
Какой критерий - переименование первых 2 цифр? Или это инкремент +1 ?
да там каждый день цифры меняются
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
01.08.2014, 14:35
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Здесь тогда придется использовать математику специально для дат.
На счет КУЛ тоже не совсем понятно.
Я взял первый попавшийся файл в этой папке по маске КУЛ.*
К расширению прибавляю +1 и переименовую.

Bash Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@echo off
SetLocal EnableExtensions
 
:: Задаем путь к папке, которую нужно скопировать
Set srcFolder=d:\01022014
 
:: Куда копируем
Set destFolder=d:\_some
 
:: Получаю только имя папки
For /F "delims=" %%a in ("%srcFolder%") do set "FName=%%~nxa"
 
:: Добавляю к дате +1
call :fromDate "%FName%" +1 ddmmyyyy
 
:: Копирую в папку %destFolder%\<Новая дата>
xcopy /C /E /H /R /Y /I /K "%srcFolder%" "%destFolder%\%ddmmyyyy%"
 
:: Ищу в папке первый попавшийся файл с именем КУЛ
For /F "delims=" %%a in ('dir /b /a-d /O-N "%srcFolder%\КУЛ.*"') do set "CoolExt=%%~xa"
 
:: Инкремент +1
set "CoolExt=%CoolExt:~1%"
set /a CoolExtInc=%CoolExt%+1
 
:: Переименовую КУЛ.Число в КУЛ.Число+1
ren "%destFolder%\%ddmmyyyy%\КУЛ.%CoolExt%" "КУЛ.%CoolExtInc%"
 
pause>nul & goto :eof
 
 
:FromDate [Дата] [действие (+-) Число дней] [Переменная для хранения результата]
:: Функция работы с датами
setLocal
set now=%~1
set /a yyyy=%now:~-4%
set /a mm=1%now:~2,2%-100
set /a dd=1%now:~,2%-100
set /a JD=%~2+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
set /a L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
set /a L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
set /a J=J+2-12*L,I=100*(N-49)+I+L
set /a yyyy=I,mm=100+J,dd=100+K
EndLocal& set "%~3=%dd:~-2%%mm:~-2%%yyyy%"
exit /b
1
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
29.01.2016, 23:06
Dragokas, А подскажите пожалуйста как в моем случае правильно переименовать файл Excel с именем "График 2016" в файл с именем "График БУДУЩИЙ МЕСЯЦ" 2016? Пример нужного имени "График Февраль 2016"
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
29.01.2016, 23:26
Текущий месяц брать исходя из текущей даты в системе?
0
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
30.01.2016, 13:01
Цитата Сообщение от Dragokas Посмотреть сообщение
Текущий месяц брать исходя из текущей даты в системе?
Да текущий месяц брать именно исходя из текущей даты в системе .
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.01.2016, 17:34
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Батник сохранять в кодировке OEM-866.

Windows Batch file Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
SetLocal EnableExtensions
 
::Задайте папку, в которой переименовуем файл (по умолчанию . - текущая)
set Folder=.
 
::Задайте имя файла excel (без расширения)
set xlName=График 2016
 
call :ParseDateSafe "%Date%" DayToday MonthToday YearToday
 
set /a MonthToday+=1
if %MonthToday%==13 (set MonthToday=1& set /a YearToday+=1)
 
For /f "tokens=%MonthToday%" %%a in ("Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь") do set NextMonthName=%%a
 
:: удаляем последнее слово из имени
set "xlNameNew=%xlName: =.%" 
for /f %%a in ("%xlNameNew%") do set "xlNameNew=%%~na"
set "xlNameNew=%xlNameNew:.= %"
 
:: Переименовываем
ren "%Folder%\%xlName%.xls*" "%xlNameNew% %NextMonthName% %YearToday%.*"
 
pause
goto :eof
 
:ParseDateSafe [Дата] [Переменная - День] [Переменная - Месяц] [Переменная - Год]
  :: Функция безопасного парсинга даты на составляющие вне зависимости от настроек региональных стандартов
  if not Defined iDate For /F "Tokens=1,3" %%i IN ('REG QUERY "HKCU\Control Panel\International" /s^|FindStr /C:"iDate" /C:"sDate"') DO Set "%%i=%%j"
  set "DateToParse=%~1"
  For /F "Tokens=2" %%? IN ("%~1") Do if not "%%?"=="" set "DateToParse=%%?"
  For /F "Tokens=1-4* Delims=%sDate% " %%A IN ("%DateToParse%") Do (
    If "%iDate%"=="0" Set "Year=%%C"& Set "Month=%%A"& Set "Day=%%B"
    If "%iDate%"=="1" Set "Year=%%C"& Set "Month=%%B"& Set "Day=%%A"
    If "%iDate%"=="2" Set "Year=%%A"& Set "Month=%%B"& Set "Day=%%C"
  )
  if "%Month:~,1%"=="0" set Month=%Month:~-1%
  if "%Day:~,1%"=="0" set Day=%Day:~-1%
  set "%~2=%Day%"& set "%~3=%Month%"& set "%~4=%Year%"
Exit /B
1
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
31.01.2016, 12:00
Dragokas, Спасибо все работает. Только вот возникла еще необходимость выполнять эту операцию периодически и сохранять исходный файл в исходной папке без изменений.
Как правильно дополнить код чтобы исходный файл первоначально копировался в другую папку а потом уже скопированный файл в другой папке переименовывался по этому же принципу
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
31.01.2016, 15:20
Где-нибудь вначале пишите:

Windows Batch file Скопировано
1
2
::Новая папка
set FolderNew=c:\temp
а вместо 23-й строки:
Windows Batch file Скопировано
1
2
copy "%Folder%\%xlName%.xls*" "%FolderNew%\*.*"
ren "%FolderNew%\%xlName%.xls*" "%xlNameNew% %NextMonthName% %YearToday%.*"
Добавлено через 1 минуту
А в конечной папке Вы файл будете периодически самостоятельно удалять или как?
1
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
31.01.2016, 19:14
Цитата Сообщение от Dragokas Посмотреть сообщение
А в конечной папке Вы файл будете периодически самостоятельно удалять или как?
В конечной папке файлы буду удалять самостоятельно по мере необходимости .
Спасибо
0
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
08.02.2016, 23:13
Dragokas подскажите пожалуйста как правильно запустить автоматическое выполнение полученного батника в планировщике заданий Windows ?
Задача запускается окно появляется и исчезает . но ничего из прописанного в файле не выполняется .
0
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
09.02.2016, 12:02
esboy21,
Вар 1
Батник лежит там где он точно выполняет свою задачу при запуске непосредственно или ярлыком откуда угодно или планировщиком с указанием к нему пути соответственно
Вар 2
В батнике прописаны пути для выполнения задачи и он лежит где угодно и выполняет свою задачу при запуске непосредственно или ярлыком откуда угодно или планировщиком с указанием к нему пути соответственно.
0
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 104
09.02.2016, 21:01
Цитата Сообщение от alpap Посмотреть сообщение
В батнике прописаны пути для выполнения задачи
как правильно прописать путь выполнения задачи ? можно пример ?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18023 / 7726 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.02.2016, 21:05
В строке № 5 вместо точки указать конкретный путь к папке,
либо: расположить батник в той папке, где требуется обработка + в строке № 3 написать следующее:
Windows Batch file Скопировано
1
cd /d "%~dp0"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2016, 21:05
Помогаю со студенческими работами здесь

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

Кириллица в именах папок при работе с psexec
Здравствуйте. Подскажите как исправить следующее: Захожу в CMD удалённой машины с помощью psexec: PsExec.exe \\comp -u...

Исчезновение файлов при массовом переименовании
Есть набор изображений с различными не систематизированными названиями Пытаюсь упорядочить названия следующим способом, import...

Неправильная сортировка при групповом переименовании файлов
Имеются файлы вида 1.ext,2ext...100.ext... Задача привести их к виду скажем 0001.ext,0002ext...0100.ext Имеется бат файл: @echo off ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
BASH scripting - the best cases [PurpleSchool]
jigi33 08.04.2025
Занятия BASH в PurpleSchool - отличные примеры для внедрения в практику (see screenshots and file names)
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер