2015-01-15 6 views
0

У меня возникла проблема с переименованием файла в реестр каталога. Пример:Пакет: Переименуйте файл в соответствии с командой dir

У меня есть имя папки кандидат в диске С и внутри папки кандидата есть ниже файлов:

  1. something.txt
  2. everything.doc
  3. onething.bmp

Когда я dir, я получу список файлов.

В папке всегда будет 1 TXT файл и 1 ВМР файл

Как я могу переименовать файл BMP поэтому он будет иметь такое же имя, как файл TXT, предполагая, что я использую реж * .txt

в приведенном выше примере, как я могу изменить onething.bmp к something.bmp

Заранее спасибо за любые ответы

ответ

1
for %%X in ("*.txt") do (
for %%Y in ("*.bmp") do (
    echo ren %%Y %%~nX%%~xY 
) 
) 

удалите echo, если выход - это то, что вам нужно.

Для объяснения %%~nX и т.д. см for /?

+0

Спасибо @Stephan ... Я до сих пор не могу это исправить. Вот что я сделал : copyFiles copy * .txt c: \ MY \% имя пользователя% \% 3 \ копия * .doc c: \ MY \% имя пользователя% \% 3 \ копия * .bmp c: \ MY \% имя пользователя% \% 3 \ Гото renameBMP : renameBMP кд/DC: \ MY \% имя пользователя% \% 3 для %% X в ("* .txt") делать ( для %% Y в ("* .bmp") делать ( жэнь %% Y %% ~ пХ %% ~ Xy ) ) пауза Гото выход Результат не переименовывает ВМР так же, как имя файла TXT. Существует только 1 txt-файл и 1 bmp-файл – useniezan

+0

'copy .txt' не будет копировать, но вместо этого выдаст ошибку (используйте' copy * .txt') Также в 'for %% X in (" .txt ") ... 'подстановочный знак отсутствует. – Stephan

0

Это должно работать:

@ECHO OFF 
FOR %%X in ("*.txt") DO (SET txtName=%%X) 
FOR %%X in ("*.bmp") DO (SET bmpName=%%X) 
FOR /F "tokens=1 delims=." %%X IN ("%txtName%") DO (
    REN %bmpName% %%X.bmp 
) 

Это будет работать, только если файл летучей мыши находится в той же папке, что и TXT и BMP файлов. Если он находится где-то в другом месте, вам придется отрегулировать путь. Если в фолдере имеется несколько файлов bmp/​​txt, будут обрабатываться только «последние» файлы.

+0

Благодаря @Michaels Sorry сообщить, что файлы не так же, как и в пакетном месте, таким образом, ваше кодирование не дают результата, что я хочу, но на самом деле очень ценю help – useniezan

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