Удалите начальный ноль из имен файлов с помощью Powershell

Доброе утро.

У меня проблемы с пониманием прошлых тем. Я новый пользователь с минимальным пониманием.

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

CD Документы\Вложения

По сути, я хочу скопировать и вставить этот путь к файлу в Powershell, а затем скопировать и вставить команду, чтобы удалить все начальные нули из имен файлов в этой папке.

и пример имени файла будет 0123456789xxxxxxxxxx (длина и символы различаются)

Я хотел бы 123456789xxxxxx

Любая помощь приветствуется.


person user1987966    schedule 16.04.2021    source источник
comment
взгляните на метод .TrimStart(), который будет иметь каждый файл .BaseName.   -  person Lee_Dailey    schedule 16.04.2021
comment
Я изучил это, но не смог заставить его работать. Это ошибки, которые я получил, пытаясь по-разному.   -  person user1987966    schedule 16.04.2021
comment
PS C:\Users\awiget\Documents\Attachments› TrimStart() At line:1 char:11 + TrimStart() + ~ Ожидалось выражение после '('. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ожидаемое выражение   -  person user1987966    schedule 16.04.2021
comment
PS C:\Users\awiget\Documents\Attachments› TrimStart(0) TrimStart : термин «TrimStart» не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку. В строке: 1 символ: 1 + TrimStart (0) + ~~~~~~~~~ + CategoryInfo: ObjectNotFound: (TrimStart:String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException   -  person user1987966    schedule 16.04.2021
comment
я вижу, что Mathias R. Jessen заработало на вас. круто! [усмехнуться]   -  person Lee_Dailey    schedule 16.04.2021


Ответы (1)


В качестве комментариев Lee_Dailey вы можете использовать TrimStart() метод для обрезки начальных символов от строки:

# Change location to the folder
cd Documents\Attachments

# Discover all the files in the current folder with leading 0s in their name
$files = Get-ChildItem -File -Filter 0*

# Use `Rename-Item` with `TrimStart` to rename the files to the appropriate name without the leading 0s
$files |Rename-Item -NewName { $_.Name.TrimStart('0') }
person Mathias R. Jessen    schedule 16.04.2021
comment
Теперь я могу дать ногой дареному коню в зубы, но я должен спросить. Ежедневно мне приходится переименовывать сотни файлов. Мне интересно, есть ли более быстрый метод с использованием подстановочных знаков. Я получаю файлы с разными именами. Но константа в том, что всегда есть строка чисел впереди, иногда с начальным нулем, иногда без, но они всегда имеют 9-10 цифр. Можно ли помимо удаления ведущего нуля переименовать конец файла? Как это. 0123456789 xyzpdq при чем здесь? 123456789_LM КОМПЛЕКТ ЗАКРЫТИЯ МОД. В настоящее время я использую несколько команд переименования для достижения этой цели. - person user1987966; 16.04.2021
comment
@user1987966 user1987966 Мне нужно что-то более быстрое звучит как воображаемая проблема :) вы действительно пытались измерить, насколько быстро/медленно это происходит по сравнению со 100 файлами? - person Mathias R. Jessen; 16.04.2021
comment
Когда я говорю сотни, я имею в виду от 300 до 500 файлов каждый день. Хотя использование различных строковых команд не совсем болезненно, но все же требует времени. Мне просто было интересно узнать о возможности, а подстановочные знаки всегда очаровывали и смущали меня. - person user1987966; 16.04.2021
comment
@user1987966 user1987966 Опять же, протестируйте / оцените, если у вас есть проблемы :) На моем ноутбуке обнаружение и переименование 1000 файлов с ведущими нулями в папке с ~ 3000 файлами занимает менее 1 секунды (~ 850 мс). Что касается вашего второго вопроса: задайте новый вопрос и предоставьте все необходимые данные :) - person Mathias R. Jessen; 16.04.2021