0 / 0 / 0
Регистрация: 14.09.2020
Сообщений: 11
1

Сокращение длины имени файла

16.03.2022, 10:58. Показов 1861. Ответов 1

Author24 — интернет-сервис помощи студентам
Добрый день!
Возникла проблема с переносом дерева каталогов с файлами из NTFS в Ext4.
Максимальная длина имени файла в Ext4 - 255 байт, один символ кириллицы - 2 байта.
Буду благодарен за помочь со скриптом рекурсивного переименования файлов до 127 символов.
Возможно обрезание с конца имени файла до нужного значения или замена лишнего количества символов в середине файла на деш (-).

Добавлено через 1 час 43 минуты

PowerShell
1
2
3
4
5
6
7
Get-ChildItem -Path "C:\Users\111\Desktop\test" -Recurse -File |
ForEach-Object{
if($_.BaseName.Length -gt 127)
        {        
        Rename-Item -Path $_.FullName -NewName ($_.basename.Substring(0,127) + $_.Extension)
        }
        }
Вопрос теперь в другом, как обработать ошибку, если файл с таким именем уже существует

Rename-Item : Невозможно создать файл, так как он уже существует.
C:\Users\ARM_VES\Desktop\Безымянный1.ps1:5 знак:9
+ Rename-Item -Path $_.FullName -NewName ($_.basename.Substring ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\111_VE...KJHGAKJHGKA.txt:String) [Rename-Item], IOException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2022, 10:58
Ответы с готовыми решениями:

Сравнение длины имени файла
Добрый день, нужна помощь Как сравнить длину имен файлов? Нужно определить какие файлы есть с...

Синтаксическая ошибка в имени файла, имени папки или в метке тома
Не знаю выбрал я подходящую тему и касается ли моя проблема Windows 8.1,но всё же. При каждой моей...

Синтаксическая ошибка в имени файла, имени папки или метке тома
Здравствуйте. Выполняю лаб. работу в cmd, в которой есть задание связанные с командой "Copy"....

Разница в работе bat-файла при его запуске от имени простого пользователя и от имени администратора
Здравствуйте. Пытаюсь создать .bat который: создаёт папку %ProgramFiles%\MyProg и копирует туда...

Переименование или создание имени папки из части имени первого и последнего файла в которой они лежат
Добрый день! Помогите дописать скрипт который собирает файлы в папки с указанным размером в Мб. На...

1
1340 / 498 / 139
Регистрация: 20.02.2019
Сообщений: 2,507
Записей в блоге: 42
16.03.2022, 14:17 2
Лучший ответ Сообщение было отмечено Dima-- как решение

Решение

А много таких?
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using namespace System.IO
using namespace System.Collections.Generic
 
param (
    [string]$SourceDirectory = "C:\Program Files\Sublime Text 3"
)
 
$ErrorActionPreference = 'stop'
Set-StrictMode -Version "latest"
 
class InfoAboutFile {
    $OldName
    $NewName
    $FullPath
    $ParentDirectoryNaьe
    
    InfoAboutFile ($Name){
        $this.OldName = [Path]::GetFileName($Name)
        $this.NewName = $this.MakeNewName($this.OldName)
        $this.FullPath = $Name
        $this.ParentDirectoryNaьe = [Directory]::GetParent($Name).Name
    }
    
    [string] MakeNewName ($Name) {
        return $Name.Substring(0, [math]::min($Name.Length, 127))
    }
}
 
$list =[list[InfoAboutFile]]::new()
 
if (-not [Directory]::Exists($SourceDirectory)){
    throw "Directory: $SourceDirectory not found"
}
 
foreach ($file in [Directory]::GetFiles($SourceDirectory, '*', [SearchOption]::AllDirectories)){
    $list.add([InfoAboutFile]::new($file))
}
 
$list | Group-Object NewName, ParentDirectoryNaьe | Where-Object Count -gt 1 | Select-Object Name
0
16.03.2022, 14:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2022, 14:17
Помогаю со студенческими работами здесь

Длина пути меньше длины имени и расширения;
Длина пути меньше длины имени и расширения. Написать батник

Сообщение об ошибке "Синтаксическая ошибка в имени файла, имени папки или метке тома."
Всем доброй ночи, уважаемые форумчане! Делаю лабораторную работу, вот текст примера: D: Cd...

"Синтаксическая ошибка в имени файла, имени папки или метке тома" Батник не может найти путь
Пытался менять путь по разному, но батник никак не может найти путь, не пойму почему @echo off...

Сравнение по имени файла к имени файла
Имеется вот такой код при его выполнении я получаю не то что мне нужно. For /R...

Строковые функции, сокращение имени файла
procedure TImport.Button1Click(Sender: TObject); var c, i, kol_bukv: Integer; sear2:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru