![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Уменьшить число в имени файла |
|
|
CMD/BAT - [решено] Уменьшить число в имени файла
|
Ветеран Сообщения: 558 |
Здравствуйте. Можно ли сделать такой бат, который будет переименовывать конкретный файл?.. но не стандартно переименовывать, а вот так....... при запуске батника, цифра в имени нужного файла (который я сам укажу), должна уменьшиться на 1.
Известно что Цифра находится в конце имени файла.. больше цифр в имени нету.. ни в середине, ни в начале. Расширения у файла нету. Известно имя файла (кроме цифры в конце имени). В папке будут множество файлов, нужно переименовывать не все, а только нужный. К примеру нужный нам файл "hello world - 15" (в скрипте мы должны указать его имя без цифры) после запуска bat файла, этот нужный нам файл должен называться "hello world - 14" если еще раз запустить бат файл, нужный файл будет называться "hello world - 13" и т.д. Если дойдет до нуля, т.е. файл будет с именем "hello world - 0", то ничего не должно происходить. ![]() |
|
Отправлено: 16:43, 01-04-2018 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
"-" обязательно обрамляются пробелами " - "? |
|
------- Отправлено: 19:09, 01-04-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Цитата Alexander_88:
Цитата Alexander_88:
|
|||
Отправлено: 19:36, 01-04-2018 | #3 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Пусть в скрипте я буду указывать все символы до числа (которое нужно уменьшать)... пример.. для файлов 1 - "hello world - 15" 2 - "windows 3 - 12" 3 - "guten tag 2 - 25" В соответствующих скриптах мы будет указывать: 1 - "hello world - " 2 - "windows 3 - " 3 - "guten tag 2 - " Цитата megaloman:
Цитата Iska:
Цитата Iska:
Цитата Iska:
![]() |
|||||
Последний раз редактировалось Alexander_88, 01-04-2018 в 20:18. Отправлено: 20:11, 01-04-2018 | #4 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Alexander_88,
Не важно, есть ли расширение или дефисы. Важно чтобы файл по указанной маске был единственный. Маска для файла без расширения должна завершаться точкой.
@Echo Off Set "InFile=Z:\Box_In\ok likes 2 - *." FOR %%f IN ("%InFile%") DO (Set "Full=%%f" &Set "NFile0=%%~nf" &Set "Ext=%%~xf") If "%Full%"=="" Exit /B 2 Set "NFile=%NFile0: =z%" Set "NFile=%NFile:-=z%" FOR /L %%i IN (1,1,9999) DO Call Set /A M=1%%NFile:~-%%i%%*10 2>nul ||(Set /A N=%%i &GoTo :Cont) :Cont If %N% EQU 1 Exit /B 1 Set /A N=%N%-1 Call Set /A M=%%NFile0:~-%N%%%*1 If %M% EQU 0 Exit /B 0 Set /A M=%M%-1 Call Set "NFile=%%NFile0:~0,-%N%%%%M%%Ext%" Ren "%Full%" "%NFile%" ||Exit /B 4 Exit /B 0 |
|
------- Последний раз редактировалось megaloman, 01-04-2018 в 22:39. Отправлено: 21:02, 01-04-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:05, 01-04-2018 | #6 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Alexander_88,
Вот батник. Если Вы сделаете на него на рабочем столе иконку, то, затягивая в проводнике файл на нее, получите нужный результат с переименованием.
Либо можете распорядиться этим батником и файлом как это показал Iska @Echo Off Set "Full=%~1" Set "NFile0=%~n1" Set "Ext=%~x1" Set "NFile=%NFile0: =z%" Set "NFile=%NFile:-=z%" FOR /L %%i IN (1,1,9999) DO Call Set /A M=1%%NFile:~-%%i%%*10 2>nul ||(Set /A N=%%i &GoTo :Cont) :Cont If %N% EQU 1 Exit /B 1 Set /A N=%N%-1 Call Set /A M=%%NFile0:~-%N%%%*1 If %M% EQU 0 Exit /B 0 Set /A M=%M%-1 Call Set "NFile=%%NFile0:~0,-%N%%%%M%%Ext%" Ren "%Full%" "%NFile%" ||Exit /B 4 Exit /B 0 |
------- Последний раз редактировалось megaloman, 01-04-2018 в 21:26. Отправлено: 21:14, 01-04-2018 | #7 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Цитата Iska:
megaloman, Спасибо, я проверил, у меня все работает, кроме файлов, в имени которых есть цифры. Цитата Alexander_88:
"ok likes 2 - 15" В скрипте указал "C:\ok likes 2 - *." после применения бата, файл стал называться "ok likes 2 -14" при последующих запусках конечное число начинает увеличиваться. ("ok likes 2 -14", "ok likes 2 -15", "ok likes 2 -16" и т.д.) |
||
Отправлено: 22:05, 01-04-2018 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
|
|
------- Отправлено: 22:13, 01-04-2018 | #9 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Получается так Цитата Alexander_88:
Возможно, как то не полностью я в бате исправил что - то (прикрепил). |
||
Отправлено: 22:31, 01-04-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Синтаксическая ошибка в имени файла, имени папки или метке тома | Maestro Deno | Microsoft Windows 7 | 8 | 05-03-2017 19:21 | |
Доступ - Синтаксическая ошибка в имени файла, имени папки или метке тома | Maestro Deno | Microsoft Windows 7 | 1 | 05-03-2017 16:18 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 | |
[решено] Получить максимальное число (в имени файла) | D_Master | AutoIt | 2 | 11-06-2009 19:03 | |
[решено] Как уменьшить скорость вращения (число оборотов) вентилятора на процессоре | dsl | Разгон, охлаждение и моддинг | 6 | 18-01-2009 15:39 |
|