『壹』 用C語言編程修改文件名(C++也行)
麻煩在文件名允許有空白和一些與C語言有沖突的特殊符號。
如果沒有上述情況可以這樣寫:
(1)通過位置參數傳入 老擴展名 和 新擴展名
void main(int argc, char *argv[]){}
命令行: my_rename.exe jpeg jpg
程序名在 argv[0]里,"jpeg" 在 argv[1]里,jpg 在 argv[2]里了
l2 = strlen(argv[1]); // 老擴展名長度
(2) 通過
char command[120],namelist[]="all.lis";
sprintf(command,"DIR/B/A-D/OD *.%s > %s", argv[1],namelist);
system(command);
取得所有要換名的文件名字列表,存放在all.lis文件里,一個文件名一行。
(3)打開 all.lis 文件,
FILE *flist;
if ( (flist = fopen(namelist,"r") ) == NULL ) {
printf("\007Cann't open work file: %s ", namelist);exit(1);
};
一行一行讀入:
char current_file_name[64],new_name[64];
while ( fgets( current_file_name, 64, flist) !=NULL ) { 處理};
(4)while 循環 處理:
strcpy(new_name,current_file_name);
l = strlen(new_name); // 文件名全長
strncpy(&new_name[0]+(l-l2),"\0",1); // 文件基本名,含點號,不含擴展名
strcat(new_name,argv[2]); // 新文件名
sprintf(command,"REN %s %s",current_file_name,new_name); // 換名命令
system(command); // 執行換名
完整程序:
#include <stdio.h>
#include <stdlib.h>
FILE *flist;
void main(int argc,char * argv[])
{
int l,l2;
char command[240],namelist[]="all.lis";
char current_file_name[64],new_name[64];
if(argc < 3) {printf("\007Usage: %s old_ext new_ext\n",argv[0]);
printf("For example: %s jpeg jpg\n",argv[0]);
exit(0);
}
l2 = strlen(argv[1]);
sprintf(command,"DIR/B/A-D/OD *.%s > %s", argv[1],namelist);
system(command);
if ( (flist = fopen(namelist,"r") ) == NULL ) {
printf("\007Cann't open work file: %s ", namelist);exit(1);
};
while ( fgets( current_file_name, 64, flist) !=NULL ) {
strcpy(new_name,current_file_name);
l = strlen(new_name);
strncpy(&new_name[0]+(l-l2-1),"\0",1);
strcat(new_name,argv[2]);
strncpy(¤t_file_name[0]+l-1,"\0",1);
sprintf(command,"REN %s %s", current_file_name, new_name);
system(command);
};
fclose(flist);
exit(0);
}
『貳』 在vim的編輯窗口的時候怎麼重命名c文件
不是太古老的vim中都有netrw文件管理器插件。
在當前工作區中的命令行模式中輸入:edit .
上面有個R:rename就是重命名了,這時用方向鍵或者j k移動游標選擇文件後直接輸入shift+r(大寫的R)在屏幕下方就會出現你選中的文件的完整路徑,修改文件名後直接回車就可以修改文件名了,之後直接回車就可以進入已經修改了文件名的文件了。
推薦一本書:vim實用技巧。這書超有用的
『叄』 如何更改C語言的文件名(如下圖)
點擊菜單欄上的文件按鈕,可以看到另存為,可以把程序文件存成其他的名字。
還有一個方法是,關閉vs,然後找到工程文件夾,找到 練習.c,然後點右鍵,選擇重命名即可。
『肆』 如何用c語言重命名
可以通過C庫函數rename實現。
頭文件:stdio.h
原型::int rename(char *oldname, char *newname);
功能: 給一個文件重命名,從原始的oldname改成新名字newname。如果oldname和newname帶有路徑,且所在文件夾不同,那麼用該函數可以實現文件移動功能。刪除成功返回0,否則返回-1。
使用rename需要注意:
一、重命名文件:
如果newname指定的文件存在,則會被覆蓋。
如果newname與oldname不在一個目錄下,則相當於移動文件。
二、重命名目錄:
如果oldname和oldname都為目錄,則重命名目錄。
如果newname指定的目錄存在且為空目錄,則先將newname刪除。
對於newname和oldname兩個目錄,調用進程必須有寫許可權。
重命名目錄時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
『伍』 如何用c語言進行文件的批量重命名
這個簡易的 按照你的方法改名的程序
在UNIX下測試可用
如果想在windows下用的話 可以用dev c++編譯
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
int main(int argc, char **argv)
{
DIR *dirp;
struct dirent *dirt;
char dir_name[100];
int file_count=1; //file_count為計數.
if (argc != 2){
printf("argument miss\n");
exit(1);
}
if ((dirp = opendir(argv[1])) ==NULL){
printf ("open dir %s failed\n",argv[1]);
exit(1);
}
chdir(argv[1]);
while ( (dirt = readdir(dirp)) != NULL){
if ((strcmp(dirt->d_name,"..") !=0) && (strcmp(dirt->d_name,".")!=0)){
memset(dir_name, 0, sizeof(dir_name));
strcpy(dir_name, dirt->d_name);
sprintf(dir_name + strlen(dirt->d_name), "_%d", file_count++);
if (rename(dirt->d_name, dir_name) < 0){ //dir_name 為新的命名
printf("rename failed\n");
exit(1);
}
}
}
return 0;
}
原理挺簡單 你輸入一個文件夾作為參數 然後程序就打開這個文件夾遍歷這個文件夾里的文件,把這個文件的名字取出來後面加上 "_計數" 用rename 重新命名就行了.