请输入您要查询的百科知识:

 

词条 rename
释义

C语言库函数

函数简介

功能: 给一个文件重命名

用 法: int rename(char *oldname, char *newname);

头文件:在Visual C++6.0中用stdio.h或者io.h

说明:用该函数可以实现文件移动功能,把一个文件的完整路径的盘符改一下就实现了这个文件的移动。具体参见下面的程序示例说明。

程序例:

#include <stdio.h>

int main(void)

{

char oldname[80], newname[80];

/* prompt for file to rename and new name */

printf("File to rename: ");

gets(oldname);

printf("New name: ");

gets(newname);

/* Rename the file */

if (rename(oldname, newname) == 0)

printf("Renamed %s to %s.\", oldname, newname);

else

perror("rename");

return 0;

}

执行过程:

File to rename: D:\\\\in.dat

New name: G:\\\\in.dat

Renamed D:\\\\in.dat to G:\\\\in.dat.

这样就实现了in.dat从D盘移动到G盘。

在unix或linux系统中:

#include <stdio.h>

int rename(const char *oldpath, const char *newpath);

函数说明

(1) 如果oldname为一个文件而不是目录,那么为该文件更名。在这种情况下,如果newname作为一个目录已存在,则它不能重命名一个目录。如果newname已存在,而且不是一个目录,则先将其删除然后将oldname更名为newname。对oldname所在目录以及newname所在的目录,调用进程必须具有写许可权,因为将更改这两个目录。

(2) 如若oldname为一个目录,那么为该目录更名。如果newname已存在,则它必须是一个目录,而且该目录应当是空目录(空目录指的是该目录中只有. 和.. 项)。如果newname存在(而且是一个空目录),则先将其删除,然后将oldname更名为newname。另外,当为一个目录更名时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。

(3) 作为一个特例,如果oldname和newname引用同一文件,则函数不做任何更改而成功返回。

返回值 执行成功则返回0,失败返回-1,错误原因存于errno

范例

#include <stdio.h>

void main(int argc,char **argv)

{

if(argc<3)

{

printf(“Usage: %s old_name new_name\”,argv[0]);

return;

}

printf(“%s=>%s”,argc[1],argv[2]);

if(rename(argv[1],argv[2]<0)

printf(“error!\”);

else

printf(“ok!\”);

}

dos命令

简介

功能:重命名文件或文件夹

用法:rename 完整路径文件名(文件夹名) 新文件名(新文件夹名)

ren 完整路径文件名(文件夹名) 新文件名(新文件夹名)

应用举例

例子:

如想修改D盘下的文件1.txt为2.txt可以在cmd中执行命令

ren d:\\1.txt 2.txt

如想修改D盘下的文件夹old为文件夹new可以在cmd中执行命令

ren d:\\old new

Linux命令

linux中rename和mv都可以对文件重命名,在此对rename命令和mv命令在重命名文件方面做一个比较。

可以看到mv命令确实有重命名的功能,但是实际应用中,它只能对单个文件重命名,命令如下:

mv [path/]oldfilename [path/]newfilename "mv命令只能对单个文件重命名",这实就是mv命令和rename命令的在重命名方面的根本区别。

再来说rename命令,rename命令是专用于文件重命名的,而且根据其后的例子可以看出,rename除了给单个文件重命名,还可以批量文件重命名。同时,值得注意一点的是,rename命令是带3个参数而不是很多人认为的2个参数。

上面的例子中给出了两种文件批量重命名的用法,而实际上,rename结合通配符使用,它的功能比上面的例子所显示的更强大。基本的通配符有以下几个:

? 可替代单个字符

* 可替代多个字符

[charset] 可替代charset集中的任意单个字符

rename把文件名中的第一个参数字符串用第二个参数替换,只替换符合第三个参数模式的文件名。

下面以例子加以说明:

如文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278,如果使用

rename foo foo0 foo?

则它只会把foo1到foo9的文件重命名为foo01到foo09,因为?通配符只能替代单个字符,所以被重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。

再继续使用

rename foo foo0 foo??

则文件夹中的foo01到foo99的所有文件都被重命名为foo001到foo099,而foo100及其以后的文件名都不变,因为通配符?的使用,所以只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。

如果再继续使用

rename foo foo0 foo*

则foo001到foo278的所有文件都被重命名为foo0001到foo0278,因为通配符*可替代多个字符,所以,所有以foo开头的文件都被重命名了,文件名中的foo被替换为foo0。

我们再来看通配符[charset]的用法,还是继续在上面所说的文件夹中,执行如下命令

rename foo0 foo foo0[2]*

则从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 12:29:04