Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
PowerShell - [решено] удалить лишние ссылки, если имена файлов совпадают

Ветеран


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

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


Здравствуйте, подскажите, как можно удалить лишние ссылки из txt файла. Лишние считаются, если имена файла, игнорируя разрешение совпадает. И такое условие.. если среди лишних ссылок есть та, в имени файла которой расширение mp4, то должна остаться именно эта ссылка, а удалиться та, которая с другим расширением.. А если они все с расширением mp4, то должна остаться только одна.. если нет лишних с mp4, то также должна одна остаться.
Пример:
файл 1.txt
Код: Выделить весь код
https://k2s.cc/file/c7dert7de8/0301start.mp4
https://k2s.cc/file/579a1wer7c7/0301start.mp4
https://k2s.cc/file/c97ary2a49/0301kino.mp4
https://k2s.cc/file/a2f4bwee2/0301kino.avi
https://k2s.cc/file/3fa267twf730/0301ugol.mp4
https://k2s.cc/file/ab4e4hjef31/0301ugol.avi
https://k2s.cc/file/0161s2edf4a7f/0301ugol.mp4
https://k2s.cc/file/8c504fgj993c/0302krot.mp4
https://k2s.cc/file/b646bf1vd4nb2/0305www.mp4
https://k2s.cc/file/092e70sdf57672/0308rr.mp4
https://k2s.cc/file/fda01cсми6dd/0308ert.mp4
https://k2s.cc/file/273c612выап0/0308ghg.mp4
https://k2s.cc/file/cb4d00ур5ea2/0309гншb.mp4
после применения скрипта, файл 1.txt должен стать таким:
Код: Выделить весь код
https://k2s.cc/file/579a1wer7c7/0301start.mp4
https://k2s.cc/file/c97ary2a49/0301kino.mp4
https://k2s.cc/file/0161s2edf4a7f/0301ugol.mp4
https://k2s.cc/file/8c504fgj993c/0302krot.mp4
https://k2s.cc/file/b646bf1vd4nb2/0305www.mp4
https://k2s.cc/file/092e70sdf57672/0308rr.mp4
https://k2s.cc/file/fda01cсми6dd/0308ert.mp4
https://k2s.cc/file/273c612выап0/0308ghg.mp4
https://k2s.cc/file/cb4d00ур5ea2/0309гншb.mp4

Отправлено: 11:32, 17-03-2024

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$file = 'C:\Temp\1.txt'

$content = gc $file |
group {$_ -replace '.*/(.+)\..+?$','$1'} |% {
    if ($_.count -eq 1) {
        $_.group
    }
    else {
        if ($_.group -match 'mp4$') {($_.group -match 'mp4$')[-1]}
        else {($_.group)[-1]}
    }
}

Set-Content -Path $file -Value $content

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 19-03-2024 в 20:56. Причина: v2

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

Отправлено: 16:34, 18-03-2024 | #2



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

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


Ветеран


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

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


DJ Mogarych, спасибо, проверил на боевом файле, судя по другой программе очистилось больше ссылок, чем показывает программа ссылок с одинаковыми именами файлов (игнорируя расширение). Посмотрел, скрипт удаляет все ссылки (не только лишние), если нету не одной ссылки с mp4. например, если две ссылки с именами.расширениями 0215start.wmv, то они обе удалятся, и ни одной не останется, можно ли сделать, чтобы осталась одна (желательно самая нижняя, если это возможно).
--
Необходимо удалить только лишние (это если имена файла (ИГНОРИРУЯ РАСШИРЕНИЕ) совпадает), т.е. должно остаться по одной ссылки для каждого имени файла.
У mp4 ссылок как бы приоритет:
- если есть лишние ссылки и в них разные расширения, то остается только одна с mp4... если mp4 несколько, остается самая нижняя.
- если есть лишние ссылки, но не в одной нету mp4, то остается только одна, самая нижняя.
- если нету лишних ссылок, то с ссылкой ничего не происходит, не важно какое у ней расширение.

Отправлено: 09:04, 19-03-2024 | #3


Deadooshka


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

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


в .net есть методы всякие разные
Код: Выделить весь код
gc $file | % {
  $uri = [Uri]$_
  if (-not $uri.Segments -or -not ($fn = $uri.Segments[-1])) { return }
  [pscustomobject]@{
    FN = [IO.Path]::GetFileNameWithoutExtension($fn)
    E = [IO.Path]::GetExtension($fn)
    S = $_
  }
} | group FN | % {
  [array]$mp4 = $_.Group | ? E -eq '.mp4'
  if ($mp4.length) { $mp4[-1].S}
  else { $_.Group[-1].S }
} | out-file ($file + '___.txt') -enc default

Последний раз редактировалось Sham, 19-03-2024 в 15:10. Причина: $uri.Segments мб null

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

Отправлено: 12:22, 19-03-2024 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


поправил

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 20:56, 19-03-2024 | #5


Ветеран


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

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


спасибо, оба скрипта работают, все как хотел

Отправлено: 07:27, 21-03-2024 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить лишние файлы Patroklos Скриптовые языки администрирования Windows 8 11-06-2019 11:50
Разное - [решено] Можно ли удалить имена файлов? monster Microsoft Windows 8 и 8.1 12 13-11-2012 01:02
CMD/BAT - BAT файлом сравнить ряд файлов по размеру - если общий размер сходится удалить invisibleon Скриптовые языки администрирования Windows 16 12-10-2012 08:55
2008 R2 - Сайт не виден из локальной сети (имена домена и сайта не совпадают) ramzesu-info Windows Server 2008/2008 R2 1 04-02-2012 07:44
удалить лишние файлы binders Вебмастеру 3 29-09-2011 17:50




 
Переход