2013-07-04 2 views
0

Мне нужно переименовать кучу файлов. Они все в одной папке. Моя идея состояла в том, чтобы сделать это с помощью пакетного скрипта, но проблема в том, что я должен «разделить» исходное имя файла и указать ему индексный номер.Переименуйте кучу файлов и добавьте индексный счетчик

Например:

Original Filename: XYZ SomeDocument.docx 
New Filename: XYZ 01 SomeDocument.docx 

Кто-нибудь есть идея, как я могу это сделать?

+0

сделать все имена файлов имеют одинаковый синтаксис "текст-пространство-текст" без каких-либо дополнительных пространств? Или первая часть (XYZ) фиксированной длины («xxx sometext»)? – Stephan

+0

Да, все файлы имеют одинаковый синтаксис. А также XYZ одинаково для каждого файла. – drummercrm

ответ

1
@echo off 
setlocal EnableDelayedExpansion 
set index=100 
for /F "tokens=1*" %%a in ('dir /B /A-D') do (
    set /A index+=1 
    ren "%%a %%b" "%%a !index:~-2! %%b" 
) 
+0

Спасибо! Это работает хорошо. – drummercrm

+0

@ user1619655 Обратите внимание, что это не будет работать правильно, если у вас более 99 файлов для переименования в этой папке. Он также не обрабатывает конфликты имен. –

0

Я всегда использую Python для таких задач, как это :)

Eg:

import os 

DIR = r'C:\foo' 

index = 1 
for file_name in os.listdir(DIR): 
    old_path = os.path.join(DIR, file_name) 
    split = file_name.split("XYZ") 
    new_file_name = "XYZ %s %s" % (index, split[1].strip()) 
    new_path = os.path.join(DIR, new_file_name) 
    os.rename(old_path, new_path) 
    index += 1 
+0

Спасибо за ваш ответ, но, извините, мне не разрешено использовать Python для этого (это задача на работе;)). Так что это должен быть пакетный или VB Script. – drummercrm

Смежные вопросы