2015-03-26 2 views
0

Как я могу использовать командные команды для переименования файла на основе существующего текста по имени? Например, если у меня есть файл с именем:Переименование файла на основе существующего текста в имени файла с использованием только пакетных скриптов

abc-pqr123Jan20151321f

я, возможно, придется переименовать его в

q~hello~Jan-2015~zz.

Мне всегда нужно использовать месяц и год, уже присутствующие в имени файла; он всегда будет в том же месте в имени исходного файла. Другими символами в имени могут быть любые случайные тексты. Месяц и год будут меняться на все месяцы.

Я хотел бы переименовать только один файл за раз. Должны использоваться только командные команды.

+0

Пожалуйста, покажите нам, что вы уже пробовали, и мы поможем вам исправить то, что сломано. Кроме того, каковы ограничения на формат входного файла? Будет ли месяц всегда содержать первый верхний регистр имени файла? Или он всегда будет начинаться с 11-го символа? – ghoti

+0

Да Он всегда начинается с 11-го символа. Имя файла всегда будет аналогично указанному выше. Месяц будет иметь первый символ верхнего регистра в имени файла. Мне нужно будет захватить эти 7 символов и включить их в новое имя файла. Ограничение - использовать только пакетные скрипты. Спасибо – Sharma

ответ

0
 
C:\Temp> set f=abc-pqr123Jan20151321f 

C:\Temp> set x=q~hello~%f:~10,7%~zz 

C:\Temp> echo %x% 
q~hello~Jan2015~zz 

C:\Temp> _ 

Ограничение “ только пакетные команды, которые будут использоваться ” немного неясно и странно. Какое качество команд “ командные команды ”? И почему на Земле это ограничивается?

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

+0

Это не сработало успешно. Ошибка: следующее использование оператора пути при замещении пакетного параметра недопустимо:% ~ zz. Он также говорит, что синтаксис неверен. Set x = q ~ hello ~% f: ~ 10,7% ~ zz .please предложить – Sharma

+0

@Sharma: Я думаю, что тильда-персонажи являются частью домашнего задания, поэтому я не буду говорить больше чем это исправление. Сначала попробуйте выяснить, что означает сообщение об ошибке. Например. попытайтесь последовательно воспроизвести эту проблему с каким-то другим кодом. Конечно, для профессиональной работы лучшим решением является просто изменить эти проблемные персонажи. Итак, вы видите, ответы очень зависят от того, является ли это профессиональной или домашней работой. –

+0

ОК. я попытаюсь использовать другой разделитель. Спасибо – Sharma

1

Попробуйте это:

@echo off &setlocal disabledelayedexpansion 
set "FilePath=C:\test\abc-pqr123Jan20151321f" 
for %%a in ("%FilePath%\*") do set "FileName=%%~nxa" 
set "NewName=q~hello~%FileName:~10,7%~zz" 
echo ren "%FilePath%\%FileName%" "%NewName%" 
+3

Добро пожаловать в SO Endoro :). – npocmaka

+0

Привет, Кажется, это полезно. Я тестировал его в соответствии с моим требованием. Здесь я столкнулся с одной небольшой проблемой. Как передать имя файла во время выполнения, которое всегда будет в указанной папке, скажем, C:/test/abc-pqr123Jan20151321f. Имя файла будет меняться каждый месяц, поэтому я хочу передать его во время выполнения, а не жестко закодированное. Спасибо за вашу помощь. – Sharma

+0

любая помощь? @endoro – Sharma

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