|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] проверка полного пути файла на кол-во символов, и обрезка имени в случае превышения |
|
PowerShell - [решено] проверка полного пути файла на кол-во символов, и обрезка имени в случае превышения
|
Старожил Сообщения: 286 |
Профиль | Отправить PM | Цитировать
Добрый!
Итак: нужно если длинна полного пути к файлу .mp4 <240 символов, тогда $file = "$dir$name.mp4" ели длинна полного пути >240 - $file = "$dir+обрезанный $name.mp4" Надеюсь хоть на этом форуме помогут) Заранее спасибо. для примера: имеем: D:\.\.\.длинное длинное имя.mp4 на выходе: D:\.\.\.длинное дл.mp4 Как именно и по какой логике это будет - неважно. главное результат. |
|
Отправлено: 02:04, 26-06-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать К сожалению, сейчас нарушена связь поколений . Для укорачивания пути также можно пользовать дедовские способы с созданием связи каталогов (junction) или отцовские — с созданием символической ссылки на каталог (symlink) .
|
Отправлено: 10:39, 26-06-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
т.к папку и имя у меня формирует $name, т.е $путь_константа\$name\$name.mp4 для себя решил обрезать именно его, по формуле (240 минус символы $путь)/2. Т.е будет резать и папку и файл одинаково, в случае превышения общего пути в 240 символов. |
|
Последний раз редактировалось 9119, 26-06-2021 в 11:55. Отправлено: 11:35, 26-06-2021 | #12 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать 1.
Цитата 9119:
$name1 = $video_name1 -replace ':|\.', ' -' -replace '&', ' and ' -replace '"|/|\\|‘|<|>|\||\?|\*|¶|§|!|,' 2. Цитата 9119:
$date = Get-Date -Format "ddMMyy" $tmp1 = "E:\!!Youtube\АРХИВ\!временное\Ролики\!в работе\tmp\1" $video_name1 = (Get-Content -encoding utf8 -Path "$tmp1\выкладка.txt")[0] $name1 = $video_name1 -replace ':|\.', ' -' -replace '&', " and " -replace '"|/|\\|‘|<|>|\||\?|\*|¶|§|!|,' $dir1 = "E:\!!Youtube\АРХИВ\!временное\Ролики\$date-$name1\кс\" $length = 240 $name = [string]$name1 $ext = '.mp4' [string]$file = $dir1 + $name + $ext if ($file.length -gt $length) { $diff = $file.length - $length if (($var = $name.length - $diff) -gt 0){ $file = $dir1 + $name.remove($var) + $ext } elseif (($length - ($dir1+$ext).length) -le 0) { write-error "Длина пути $dir1 слишком большая" } else { write-error 'Имя файла слишком короткое' } } $file |
||
------- Последний раз редактировалось YuS_2, 26-06-2021 в 12:18. Отправлено: 12:04, 26-06-2021 | #13 |
Ветеран Сообщения: 1754
|
$files = (Get-Content list.txt) foreach ($file in $files) { if ($file.Length -gt 240) { $path, $name = $file -split '(?<=^.+\\)(?=[^\\]+$)' $name = -join ($name[(240 - $path.length)..($name.Length - 1)]) $new = $path + $name $new # новый полный путь включая файл $new.Length # общая длина } $new = $null } |
Отправлено: 12:41, 26-06-2021 | #14 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Остановился для себя на таком варианте:
$date = Get-Date -Format "ddMMyy" $name1 = "Длинное название файла" $length = 96 [string]$name = $name1 if ($name.length -gt $length) {$name1 = $name.remove($length) + $ext} $dir1 = "$путь\$date-$name1\кс\" New-Item -Path $dir1 -ItemType Directory copy-item $tmp1\final_video.mp4 $dir1$name1.mp4 Плюс такой вариант более универсален, на случай если D:\$путь\$name1\$name1.mp4 будет уже больше 245 символов. Спасибо за помощь. |
Последний раз редактировалось 9119, 26-06-2021 в 15:04. Отправлено: 14:53, 26-06-2021 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 9119, вот этого:
Цитата 9119:
Цитата 9119:
|
||
Отправлено: 18:39, 28-06-2021 | #16 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Правда, при превышении длины, там не совсем корректно происходит корректировка имени, с добавлением к контролируемому имени расширения и впоследствии уже именно это новое имя с расширением попадает в наименование каталога, а также в новое имя файла плюс второе расширение... но это уже другой вопрос |
|
------- Отправлено: 08:49, 29-06-2021 | #17 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - обрезка спец символов и создание папки при копировании файла с очень длинным путем | 9119 | Скриптовые языки администрирования Windows | 6 | 10-06-2021 13:04 | |
.NET - Ошибка открытия файла из-за длинного полного имени файла | tumanovalex | Программирование и базы данных | 8 | 13-05-2018 23:21 | |
CMD/BAT - удалить первые 7 символов в имени файла | ВиталийВ | Скриптовые языки администрирования Windows | 9 | 03-04-2015 11:50 | |
VBS/WSH/JS - Проверка наличия файла в папке в случае отсутствия перезагружать компьютер | NickCom | Программирование и базы данных | 4 | 19-08-2013 05:13 | |
CMD/BAT - [решено] Разработать программу которая будет считать кол-во символов,строк,слов в .txt | klenb | Скриптовые языки администрирования Windows | 10 | 18-05-2010 15:19 |
|