Как удалить часть имени файла для пакета файлов в Windows 8.1?

Как удалить часть имени файла для пакета файлов в Windows 8.1?

У меня в папке много файлов, но все они начинаются со строки цифр и отделены от фактического имени файла символом «_».

Например:

123123123_имя_файла.txt

456456456_имя_файла2.txt

789789789_имя_файла3.txt

Я полагаю, что вы можете запустить какую-то команду, которая удалит символы перед «_» и сам «_».

Любая помощь будет высоко оценена!

решение1

Если вы не совсем уверены в себе при работе с PowerShell, возможно, вам стоит взглянуть на бесплатные утилиты, например: http://www.bulkrenameutility.co.uk/Download.php

решение2

Если вы просто хотите удалить символы из листинга, вы можете поместить следующее в пакетный файл, заменив соответствующий каталог вместоdirname

for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G

Создает dir /bпустой формат списка каталогов (без заголовочной информации или резюме). Указывает, delims=_что в качестве разделителя следует использовать подчеркивание, а указывает, tokens=2что вам нужно то, что находится после подчеркивания. СмотритеЗА/Фдля более полного объяснения того, как использовать FOR /Fв пакетном файле.

Но если вы хотите переименовать файлы без цифр и подчеркивания, в вашем примере у вас есть два файла, которые дадут имя, filename2.txtесли убрать цифры и подчеркивание. Что вы хотите сделать в этом случае? Или вы намеревались использовать filename3.txt для третьего файла?

Если после подчеркивания указано уникальное имя, вы можете использовать следующую команду для переименования файлов, заменив соответствующий каталог нарелевантныйкаталог:

set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H

В приведенном выше случае первый токен, %%G, — это то, что находится перед подчеркиванием, а второй токен %%H— это то, что находится после подчеркивания. Я снова собрал их для операции переименования и предварил их каталогом, поскольку команда переименования использует синтаксис RENAME [drive:][path]filename1 filename2.

Если вы не хотите видеть каждую операцию переименования по мере ее выполнения, добавьте @echo offв качестве первой строки пакетного файла перед командой.set

решение3

powershell    
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}

PowerShell должен быть предпочтительнее на Win8.

решение4

PowerShell: Предположим, что все файлы в папке необходимо переименовать (как подразумевает OP):

$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }

Связанный контент