Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] проверка полного пути файла на кол-во символов, и обрезка имени в случае превышения

Ответить
Настройки темы
PowerShell - [решено] проверка полного пути файла на кол-во символов, и обрезка имени в случае превышения

Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Изменения
Автор: 9119
Дата: 26-06-2021
Добрый!
Итак:

Код: Выделить весь код
$file = "$dir$name.mp4"
$dir= "длинный путь"
$name = "Длинное имя"

нужно
если длинна полного пути к файлу .mp4 <240 символов, тогда $file = "$dir$name.mp4"
ели длинна полного пути >240 - $file = "$dir+обрезанный $name.mp4"


Надеюсь хоть на этом форуме помогут) Заранее спасибо.


для примера:
имеем: D:\.\.\.длинное длинное имя.mp4
на выходе: D:\.\.\.длинное дл.mp4
Как именно и по какой логике это будет - неважно. главное результат.

Отправлено: 02:04, 26-06-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 9119:
и по какой логике »
9119, есть ещё и не рассмотренный Вами вариант — когда длина самого пути уже больше 240 символов. То есть — никакого «обрезанного» имени файла оттуда по описанной Вами логике получить нельзя будет. Что делать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:08, 26-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Iska,
Нужно так:
если длинна полного пути <240 - $file = "$dir$name.mp4"
ели длинна полного пути >240 - $file = "$dir+обрезанный $name.mp4"

Отправлено: 09:23, 26-06-2021 | #3


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата 9119:
главное результат. »
если вот, прямо по условиям, то:
Код: Выделить весь код
$length = 18
$dir = 'x:\abcdefghjklm\'
$name = 'name'
$ext = '.mp4'
[string]$file = $dir + $name + $ext
if ($file.length -gt $length) {$file = $file.remove($length) + $ext}
$file
- но учитывайте момент из вопроса, заданного Iska...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 26-06-2021 в 09:34. Причина: исправление ошибки в коде


Отправлено: 09:26, 26-06-2021 | #4


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата Iska:
когда длина самого пути уже больше 240 символов »
прошу прощения, не совсем понял что имеется ввиду.... что подразумевается под "самого пути"?

Отправлено: 09:27, 26-06-2021 | #5


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата 9119:
ели длинна полного пути >240 - $file = "$dir+обрезанный $name.mp4" »
это уже другие условия... откорректируйте первое сообщение и приведите условия в соответствие с необходимыми...

Цитата 9119:
прошу прощения, не совсем понял что имеется ввиду.... что подразумевается под "самого пути"? »
на примере:
Код: Выделить весь код
$length = 18
$dir = 'x:\abcdefghijklmnopqrstuvwxyz\'
$name = 'name'
$ext = '.mp4'
[string]$file = $dir + $name + $ext
if ($file.length -gt $length) {$file = $file.remove($length) + $ext}
$file
- запустите код и увидите, что получилось...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 26-06-2021 в 09:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:27, 26-06-2021 | #6


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


давайте чуть подробнее.

изначально, имя для файла получается из заранее подготовленного txt файла

конечный видео-файл будет имеет вид:
D:\путь\имя файла\имя файла.mp4.

Бывает что полный путь к файлу mp.4 выходит больше 240 символов. И из-за этого у софта который должен дальше обрабатывать конечный mp4 файл - возникают проблемы.
Поэтому мне нужно организовать проверку общей длинны пути перед тем как создавать дерево папок и ложить туда файл.mp4.

И если длинна больше 240 символов (например 270), отрезать лишние 30 символов, но именно у D:\путь\имя файла\имя файла.mp4 (т.е в имени самого файла.mp4)
Если же длинна не превышает - оставляем как есть


Т.е вот эта формулировка
Код: Выделить весь код
если длинна полного пути <240 - $file = "$dir$name.mp4"
ели длинна полного пути >240 - $file = "$dir+обрезанный $name.mp4"
вроде бы максимально подходит под задачу)

Последний раз редактировалось 9119, 26-06-2021 в 09:57.


Отправлено: 09:46, 26-06-2021 | #7


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата 9119:
И если длинна больше 240 символов (например 270), отрезать лишние 30 символов, но именно у D:\путь\имя файла\имя файла.mp4 (т.е в имени самого файла.mp4)
Если же длинна не превышает - оставляем как есть »
Еще раз:
Измерять, Вы, предполагаете общую длину:
D:\путь\имя файла\имя файла.mp4
Обрезать, желаете имя файла
НО
Вам описывают ситуацию, когда путь превышает те самые 240, т.е.:
D:\путь\имя файла\имя файла.mp4
- здесь длина пути, допустим 270 символов.
Действия?

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:09, 26-06-2021 | #8


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
:\путь\имя файла\имя файла.mp4
- здесь длина пути, допустим 270 символов. »
это должно игнорироваться.
Длинна должна считаться только полностью.
т.е. D:\путь\имя файла\имя файла.mp4

Код: Выделить весь код
$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 ':', " -" -replace '/', "" -replace '\\', ""  -replace '&', " and " -replace "‘", "" -replace "<", "" -replace ">", "" -replace "\|", "" -replace '\?', "" -replace '\*', ""  -replace '¶', "" -replace '§', "" -replace "!", "" -replace ",", "" -replace "\.", " -"
$dir1 = "E:\!!Youtube\АРХИВ\!временное\Ролики\$date-$name1\кс\"

...
...

New-Item -Path $dir1 -ItemType Directory

#до этой части мне нужно проверить длинну $dir1$name1.mp4, и если она больше 240, обрезать $name1 и перезаписать его с новым обрезанным значением.

copy-item $tmp1\final_video.mp4 $dir1$name1.mp4 #здесь иногда получаем длинну > 240 символов
извините если как-то непонятно объясняю. Может по коду нагляднее будет

D:\путь\имя файла\имя файла.mp4 в моем случае не будет превышать 240 символов.

Последний раз редактировалось 9119, 26-06-2021 в 10:31.


Отправлено: 10:16, 26-06-2021 | #9


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата 9119:
Т.е вот эта формулировка »
А если в имени нечего обрезать? Например:

Код: Выделить весь код
C:\240\знаков\1.mp4
Почему для сокращения длины пути не воспользоваться subst, как это делали еще наши пробабушки?
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:32, 26-06-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] проверка полного пути файла на кол-во символов, и обрезка имени в случае превышения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - удалить первые 7 символов в имени файла ВиталийВ Скриптовые языки администрирования Windows 14 02-08-2024 01:29
PowerShell - обрезка спец символов и создание папки при копировании файла с очень длинным путем 9119 Скриптовые языки администрирования Windows 6 10-06-2021 13:04
.NET - Ошибка открытия файла из-за длинного полного имени файла tumanovalex Программирование и базы данных 8 13-05-2018 23:21
VBS/WSH/JS - Проверка наличия файла в папке в случае отсутствия перезагружать компьютер NickCom Программирование и базы данных 4 19-08-2013 05:13
CMD/BAT - [решено] Разработать программу которая будет считать кол-во символов,строк,слов в .txt klenb Скриптовые языки администрирования Windows 10 18-05-2010 15:19




 
Переход