如何把文件名中括号及括号里的全部内容去掉?

lts740 2008-12-12 06:58:49
如何把文件名中括号及括号里的全部内容去掉?如:我的(花).TXT 他的(书).DOC等等,去掉后成了:我的.TXT 他的.DOC等等。请高手指教啊,十分感谢!
...全文
1335 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xempo 2009-04-23
  • 打赏
  • 举报
回复
漏了一个closedir(dir);
在if(dir){
......
......
末端
closedir(dir);
}
xempo 2009-04-22
  • 打赏
  • 举报
回复
给楼主写一个程序,当然我自己也保留一份,如下:

#include <dirent.h>
#include <unistd.h>
#include <stdio.h>

unsigned int Delete(char *pt, unsigned int cn)
{
unsigned int len=strlen(pt);
if(cn>=len){ *pt=0; return len; }
memmove(pt,pt+cn,len+1-cn);
return cn;
}

char *catfnam(char *pth, char *nam, int len, int d)
{
char * pt=malloc(len);
strcpy(pt, pth); pt[d]='/';
strcpy(pt+d+1, nam);
return pt;
}


int DirCross(char *pthnam)
{
/***** 你可以增加一些符号在下面三行 ******/
#define symCount 2
static char chs[symCount][2][3]= { { "(" , ")" } , { "(" , ")" } };
static len[symCount]={ 1, 2 };
/******** 以上供升级方便 ********/

DIR *dir=opendir(pthnam);
if(dir){
char buf[260], *pt, *dpt;
struct dirent *dt;
int i, b, d=strlen(pthnam);
while( ( dt=readdir(dir) ) )
if( strcmp(dt->d_name, ".") && strcmp(dt->d_name, "..") ){
strcpy(buf, dt->d_name );
b=strlen(buf);
for(i=0; i<symCount; i++ )
if( ( pt=strstr(buf, chs[i][0]) ) ){
Delete(pt, len[i]);
if(( pt=strstr(buf, chs[i][1]) ) ){
Delete(pt, len[i] );
pt=catfnam(pthnam, dt->d_name, d+b+4, d );
dpt=catfnam(pthnam,buf, d+b+2, d);
if(rename(pt,dpt)==0)printf("%s rename to %s\n", pt,dpt);
free(pt); free(dpt);
break;
}
}
if(dt->d_type&DT_DIR)DirCross(buf);
// free(dt);
}
}
}

int main(int c,char **pt)
{
if(c>1)DirCross(pt[1]);
return 1;
}

suilj 2009-04-21
  • 打赏
  • 举报
回复
正则表达式
xempo 2009-04-21
  • 打赏
  • 举报
回复
写一个小程序,应该可以解决。
......

flg=findfist(dir,&sblk);

while(flg){
....
pt=strchr(sblk.fname,'(');
if(pt)delete(pt,1);
pt=strchr(sblk.fname,')');
if(pt)delete(pt,1);
net_flyfox 2009-03-13
  • 打赏
  • 举报
回复
这个写角本
正则表达式
\w{*}[((]\w{*}[))]\w{*}
表示有()或()的内容,可以找出来,然后再替换。
quanhuang98bisha 2009-03-04
  • 打赏
  • 举报
回复
不会 帮顶
码农哈里 2009-01-04
  • 打赏
  • 举报
回复
写点脚本
lts740 2008-12-21
  • 打赏
  • 举报
回复
或者方法不对?请教了大侠
lts740 2008-12-21
  • 打赏
  • 举报
回复
不行啊,刚才试过了
suilj 2008-12-12
  • 打赏
  • 举报
回复
total commander 里有批量重命名的方法支持通配符

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧