|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » переименование файлов |
|
переименование файлов
|
Новый участник Сообщения: 29 |
Профиль | Отправить PM | Цитировать Есть программа, к-ая на задоном диске, по заданному пути переименовывает файлы по маске *.[] в *.[]
#include <stdio.h> #include <dos.h> #include <dir.h> #include <stdlib.h> #include <direct.h> main() { char sf; int d; char dir[MAXPATH]; printf("Please, input the name of drive (‘,D,E,F etc.) : " scanf("%c", &sf); if(sf=='C' || sf=='c') d=2; if(sf=='D' || sf=='d') d=3; if(sf=='E' || sf=='e') d=4; if(sf=='F' || sf=='f') d=5; int disk = setdisk(d); disk = getdisk() + 'A'; printf("The current drive is: %c\n", disk); _chdrive(d+1); printf("Input path: " gets(dir); /* Почему-то компилятор игнорирует эту строку и пропускает ее, почему? и как исправить*/ chdir(dir); struct find_t ffblk; int done; printf("Directory listing of \%s\n", dir); done = _dos_findfirst("*.*",_A_NORMAL,&ffblk); while (!done) { printf(" %s\n", ffblk.name); done = _dos_findnext(&ffblk); } 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.\n", oldname, newname); else perror("rename" return 0; } Как сделать так что при указании ключа /s происходили поиск и переименование в поддирректориях? |
|
Отправлено: 00:53, 03-04-2003 |
Пользователь Сообщения: 65
|
Профиль | Сайт | Отправить PM | Цитировать вопервых, функцию поиска в заданой папке вынеси отдельно.
скажем int SearchInDir(LPSTR path) далее, findfirst findnext ами нужно искать также и папки, и для каждой папки рекурсивно вызывать нашу функцию. |
Отправлено: 06:16, 03-04-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Как ввести ключ /s ?
|
Отправлено: 00:56, 08-04-2003 | #3 |
Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Vaulter
Цитата:
mask Цитата:
Цитата:
[s]Исправлено: shurikan, 13:07 9-04-2003[/s] |
|||
------- Отправлено: 13:05, 09-04-2003 | #4 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Ключ /s для того, чтобы переименовывал в поддиректориях, вводится как параметр к exe-шнику.
В первой строке присваиваем переменной номер диска, а в последней происходит смена на этот диск. |
|
Отправлено: 15:45, 09-04-2003 | #5 |
glassMonk
Сообщения: n/a |
mask
Ты я думаю слышал о argc и argv так и используй их чтобы определить параметр к твоему .exe и соответсвенно выполникь кое какие команды. Но я тебе советовал бы ключ '/r' - recursive. gets(dir) не используй ее бери лучше fgets. |
Отправлено: 03:24, 11-04-2003 | #6 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать #include <stdio.h>
#include <dos.h> #include <dir.h> #include <string.h> char ch[3]="\\", sim1[2]=".", sim2[3]=".."; char sum[MAXPATH], presum[MAXPATH]; int rename_file(char oldn[], char newn[]) { if (rename(oldn, newn) == 0) printf("Переименование из %s в %s успешно завершено\n", oldn, newn); return 0; } char find_dir(char *prm1,char *prm2,char *dir){ struct ffblk ffblk; int don; char dr[MAXPATH]; don = findfirst("*",&ffblk, FA_DIREC); while (!don) { int sim21=strcmp(ffblk.ff_name,sim1); int sim22=strcmp(ffblk.ff_name,sim2); if( sim21!=0 && sim22!=0 && !don ){ strcpy(presum, dir); strcat(presum, ch); strcpy(sum, presum); strcat(sum, ffblk.ff_name); getcwd(dr, MAXPATH); chdir(sum); rename_file(prm1,prm2); find_dir(prm1,prm2,sum); chdir(dr); } don = findnext(&ffblk); } return 0; } main(int argc, char *argv[]){ if (argc>5) printf("Неверные параметры \n" else { char tekdir[MAXPATH]; getcwd(tekdir, MAXPATH); chdir(argv[3]); if (argc==4) rename_file(argv[1],argv[2]); if (argc==5){ if(strcmp("/s",argv[4])==0){ rename_file(argv[1],argv[2]); find_dir(argv[1],argv[2],argv[3]); } else printf("Неверный параметр \n" } chdir(tekdir); } return 0; } |
Отправлено: 00:53, 20-05-2003 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Переименование файлов с заменой символов по маске | Constantant | Скриптовые языки администрирования Windows | 41 | 29-03-2016 03:40 | |
Интерфейс - [решено] Переименование большого количества файлов | 7human7 | Microsoft Windows 2000/XP | 7 | 22-11-2008 09:48 | |
Разное - [решено] Переименование файлов | mitrik | Microsoft Windows 2000/XP | 3 | 22-08-2008 04:53 | |
Разное - [решено] Переименование файлов как в Vista | sashaegor | Microsoft Windows 2000/XP | 5 | 29-01-2008 21:59 | |
Переименование файлов | Pavelz | Microsoft Windows NT/2000/2003 | 7 | 24-01-2003 10:32 |
|