Ⅰ 如何在C語言編程裡面修改源文件名字
修改文件名,可要調用操作系統提供的API函數,比如Windows上的MoveFile(),也可以直接調用cmd中已提供的重命名命令——rename。下面的示例代碼,調用rename命令來重名命文件名。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(intac,char*pav[])
{
if(ac!=3){
printf("程序名要重命名的文件路徑新的文件名
");
printf("示例:test.exe1.txt2.txt
");
return0;
}
if(access(pav[1],0)!=0){
printf("不存在該文件
");
return0;
}
charszcmd[256]="cmd/crename";
strcat(szcmd,pav[1]);
strcat(szcmd,"");
strcat(szcmd,pav[2]);
system(szcmd);
return0;
}
Ⅱ 任務管理器應用程序名稱如何修改
c代碼:
代碼如下(可復制代碼到記事本或其他文本編輯工具中,並按相應的文件名及後綴命名,即可合用VC進行編譯):
----------------------------------------------以下為main.cpp文件內容---------------------------------------------- #include #include #include "resource.h"
// 窗口處理函數
BOOL WINAPI WinProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) {
case WM_COMMAND: switch (LOWORD(wParam)) {
case IDOK : { char cSearch[64] // 要查找的標題 char cHack[64] // 要修改成的標題
char cText[128]
// 獲取文本框變數數據
GetWindowText(GetDlgItem(hDlg, IDC_EDIT1), cSearch, 64) GetWindowText(GetDlgItem(hDlg, IDC_EDIT2), cHack, 64) if (0==strlen(cSearch) || 0==strlen(cHack)) { MessageBox(hDlg, "請輸入標題", "請輸入標題", 0) break
}
// 獲取目標窗口句柄
HWND hFindDlg = FindWindow(NULL, cSearch) if (!hFindDlg) { sprintf(cText, "未找到標題為\"%s\"的程序 !", cSearch) MessageBox(hDlg, cText, "未找到", 0) break
}
// 修改目標窗口標題
SetWindowText(hFindDlg, cHack) //關鍵函數
sprintf(cText, "已將程序\"%s\"標題改為\"%s\"", cSearch, cHack)
MessageBox(hDlg, cText , "已修改", 0)
break
}
case IDCANCEL : EndDialog(hDlg, 0) break
}
break
}
return FALSE
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) {
DialogBoxParam(hInstance, (LPCTSTR)IDD_DIALOG1, NULL, WinProc, 0) //這個函數創建一個窗口,並調用WinProc函數進行處理
Ⅲ 用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);
}