|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » [решено] Скрипт для обрезки имени файлов |
|
|
[решено] Скрипт для обрезки имени файлов
|
Новый участник Сообщения: 24 |
Профиль | Сайт | Отправить PM | Цитировать Всем добрый день, понадобился скрипт, не требующий прав администратора, который будет обрезать длину файла (например до 120 символов), и будет добавлять счетчик, чтобы не оказалось файлов-дублей.
Я нашел на просторах интернета такой скрипт: @echo off set "d=D:\test" set "lim=120" for /f "delims=" %%a in ('2^>nul dir /a-d/b/s "%d%"') do call :l "%%a" pause& exit :l set "nf=%~n1"& set/a n+=1 cmd/v/c "if not exist "!nf:~,%lim%!%n%%~x1" (ren "%~1" "!nf:~,%lim%!%n%%~x1") else (goto l)" exit /b Может ли кто помочь его исправить или сделать аналогичный? P.S. До этого я делал через Total Commander, но сейчас нужно одно-кликовое решение, потому что оно нужно для эксплуатации самым простым пользователем. |
|
Отправлено: 17:15, 14-05-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Это:
Цитата michsh@vk:
|
|
Отправлено: 23:45, 14-05-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 24
|
Профиль | Сайт | Отправить PM | Цитировать Iska, если юзерам показать Far Manager, то меня запинают ногами(
|
Отправлено: 13:44, 15-05-2020 | #3 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:15, 15-05-2020 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Fors1k_m, как обычно, не хватает проверки на дубликаты.
|
|
Отправлено: 15:34, 15-05-2020 | #5 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Iska, в плане "как обычно"? Это же мой первый тут ответ.= )
А саму проверку сделать не проблема. Только не понятно, 120 символов - это длина с расширением или без? Если счетчик добавить, то будет длина 120+счетчик(+?расширение)? В общем решил дождаться реакции автора на первый код, так как все равно, скорее всего, пришлось бы дописывать) Надеюсь то, что требовалось. |
Отправлено: 16:23, 15-05-2020 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Fors1k_m, я не конкретно про Вас, я про общую ошибку такого рода — где гарантия, что новое имя не совпадает с именем уже существующего файла.
|
Отправлено: 17:07, 15-05-2020 | #7 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось Fors1k, 15-05-2020 в 18:15. Отправлено: 17:43, 15-05-2020 | #8 |
Новый участник Сообщения: 24
|
Профиль | Сайт | Отправить PM | Цитировать Fors1k_m, благодарю Вас за помощь. Расширение файла в длине можно не учитывать, главное его само название. К сожалению, я обнаружил ту же самую проблему с — в имени файла.
Когда документ имеет подобное название, скрипт не отрабатывает. Новый текстовый документ Новый текстовый документ Новый текстовый документ Новый текстовый документ Новый текстовый документ 12345 — копия (3).txt причем часть "копия (3)" не причем. Ругается именно на длинное тире, и командный интерпретатор пишет: Не удается найти указанный файл. |
Отправлено: 19:22, 15-05-2020 | #9 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата michsh@vk:
param( $Path = 'D:\test', $Length = 120 )cls 'До: '+(gci $path -file).BaseName;"" gci $path -file|?{$i++;$_.basename.length -gt $Length}|%{ren $_.fullname $($_.basename.Substring(0,$Length)+$i+$_.extension)} 'После: '+(gci $path -file).BaseName Имя файла содержало ' — ' , и после обработки имя успешно урезано до желаемой длины. |
|
Отправлено: 20:25, 15-05-2020 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Нужен скрипт для определения имени пользователя | nasha | Скриптовые языки администрирования Windows | 7 | 25-02-2020 20:12 | |
CMD/BAT - скрипт сравнение файлов и копирования по части имени | mallonih | Скриптовые языки администрирования Windows | 7 | 23-01-2020 09:21 | |
Любой язык - [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов | username-qq | Скриптовые языки администрирования Windows | 6 | 06-10-2018 18:30 | |
Лучшая программа для обрезки установочного Widows XP ? | THEDOGG | Хочу все знать | 40 | 22-02-2013 17:02 |
|