Batch file 如何重命名文件名和更改文件扩展名

Batch file 如何重命名文件名和更改文件扩展名,batch-file,Batch File,我有一个扩展名不同的文件列表,我想知道如何使用batchfile进行下面的修改 BPG\U年金.pkb——应重命名为-->包体BPG\U年金.sql BPG\U年金.pks--应重命名为-->套餐BPG\U年金.sql 我试图通过下面的注释重命名这些文件,但它不起作用 ren *.pks "PACKAGE *.sql" ren *.pkb "PACKAGE body *.sql" 我收到以下错误信息: 存在重复的文件名,或者找不到该文件 你介意帮我吗?我使用的是windows 7,64位。您不

我有一个扩展名不同的文件列表,我想知道如何使用batchfile进行下面的修改

BPG\U年金.pkb——应重命名为-->包体BPG\U年金.sql BPG\U年金.pks--应重命名为-->套餐BPG\U年金.sql

我试图通过下面的注释重命名这些文件,但它不起作用

ren *.pks "PACKAGE *.sql"
ren *.pkb "PACKAGE body *.sql"
我收到以下错误信息:

存在重复的文件名,或者找不到该文件


你介意帮我吗?我使用的是windows 7,64位。

您不能使用通配符重命名这样的文件。但是,您可以处理文件列表并逐个重命名它们

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
选项仅返回文件名)。%%~nA的
~n
部分将返回不带扩展名的文件名-在您的示例中,是不带扩展名的BPG_年金。然后,
ren
命令接受旧文件名并将其更改为
PACKAGE BPG_ANNUITY.sql
,并继续处理目录中的其余.pks文件


第二个命令的工作方式与此相同,但适用于.pkb文件。

您可以使用正则表达式通过my utility方便地重命名您的文件,my utility是一个混合JScript/批处理脚本,从XP开始在任何Windows机器上本机运行

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

ren
命令重命名文件。我尝试过,但收到以下消息:存在重复的文件名,或者找不到该文件。我不知道有哪种编程语言允许您以尝试的方式重命名文件。@SomethingDark:你好!这在c#中不是什么大问题,但我希望通过使用批处理文件以非常简单的方式处理它…谢谢,它对大多数文件都很好,但对于少数文件我有问题,例如“BPG_GREG_HIJ_DATE.pkb”“BPG_GREG_HIJ_DATE.pks”变成了“PACKAGE_HIJ_DATE.sql”“PACKAGE body DATE.sql”或“BPG_CUS01.pks”变成了“PACKAGE 1.sql”你知道上面的评论吗?我不能重复你的问题。我在这三个文件名上运行了代码,得到了
包体BPG\u GREG\u HIJ\u DATE.sql
包体BPG\u GREG\u HIJ\u DATE.sql
,以及
包体BPG\u CUS01.sql
。听起来您的文件名中有一个空格。应该是
for/f“delims=“%%a in('dir/b*.pks')do ren“%%a”“PACKAGE%%~nA.sql”
等来处理所有有效的文件名。更像是他应该提到他有带空格的文件名。我不是一个读心术的人。