2015-04-24 2 views
1

У меня есть список файлов, расширение которых разное, я хочу знать, как с помощью пакетного файла я могу сделать ниже модификации?как переименовать имя файла и изменить расширение файла

BPG_ANNUITY .pkb --- следует переименовать ---->ПАКЕТ ТЕЛА BPG_ANNUIT Y .sql BPG_ANNUITY .pks --- следует переименовать ---->ПАКЕТ BPG_ANNUITY .sql

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

ren *.pks "PACKAGE *.sql" 
ren *.pkb "PACKAGE body *.sql" 

я получил ниже ошибки:

A duplicate file name exists, or the file cannot be found.

вы возражали бы мне помочь? Я использую windows 7,64bit.

+1

Команда 'ren' переименовывает файлы. – SomethingDark

+0

Я пробовал, но я получаю ниже msg: существует дублирующее имя файла, или файл не найден. – Amir

+0

Я не знаю ни одного языка программирования, который позволит вам переименовывать файлы так, как вы пытались. – SomethingDark

ответ

1

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

for /f %%A in ('dir /b *.pks') do ren %%A "PACKAGE %%~nA.sql" 
for /f %%A in ('dir /b *.pkb') do ren %%A "PACKAGE BODY %%~nA.sql" 

Первая команда получит список имен всех .pks файлов в данном каталоге (/b опция возвращает только имя файла). Часть ~n %% ~ nA вернет имя файла без расширения - в вашем примере BPG_ANNUITY без расширения. Затем команда ren берет старое имя файла и изменяет его на PACKAGE BPG_ANNUITY.sql и продолжает с остальными .pks-файлами в каталоге.

Вторая команда работает одинаково, но с .pkb-файлами.

+0

Спасибо, он отлично работает для большей части файла, но для нескольких файлов у меня есть проблема, например, «BPG_GREG_HIJ_DATE. pkb "" BPG_GREG_HIJ_DATE.pks "стал" PACKAGE _HIJ_DATE.sql "" PACKAGE body DATE.sql "или" BPG_CUS01.pks "стал" PACKAGE 1.sql " – Amir

+0

Есть идеи по поводу вышеупомянутого комментария? – Amir

+0

Я не могу дублировать вашу проблему. Я запустил код для этих трех имен файлов и получил 'ПАКЕТ BODY BPG_GREG_HIJ_DATE.sql',' ПАКЕТ BPG_GREG_HIJ_DATE.sql' и 'ПАКЕТ BPG_CUS01.sql'. Похоже, у вас есть место в именах файлов. – SomethingDark

0

Вы можете использовать регулярные выражения для удобного переименования файлов через мою утилиту JREN.BAT - гибридный сценарий JScript/пакетный сценарий, который запускается изначально на любой машине Windows с XP и далее.

call jren "(.*\.)pks$" "PACKAGE $1sql" 
call jren "(.*\.)pkb$" "PACKAGE BODY $1sql"