批量文件名修改
来源:互联网 发布:成都c语言编程培训班 编辑:程序博客网 时间:2024/04/28 21:19
修改: http://blog.csdn.net/jiangredsheep/archive/2005/07/19/429302.aspx 的目录操作,改为文件名批量修改。
如果想保留原来的文件,可以采用copyFile函数,如下代码:
#include <iostream>
#include <string>
#include <string.h>
#include <string>
#include <afx.h>
using namespace std;
char* GetAnsicString(const CString &s)
...{
int nSize = (s.GetLength() + 1)*sizeof(TCHAR);
//char *pAnsicString = new char[nSize];
char * pAnsicString = (char *)malloc(nSize*sizeof(char));
ZeroMemory(pAnsicString, nSize);
wcstombs(pAnsicString, s, nSize);
return pAnsicString;
}
void Recurse(LPCTSTR pstr)
...{
CFileFind finder;
HANDLE hSearch;
DWORD dwAttrs;
TCHAR szDirPath[] = TEXT("C:/Documents and Settings/null/Desktop/fadg0/video/");
TCHAR szNewPath[MAX_PATH];
BOOL fFinished = FALSE;
// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("/*.*");
// start working for files
BOOL bWorking = finder.FindFile(strWildcard);
CString src,dst,filetitle,filename;
int result;
while (bWorking)
...{
bWorking = finder.FindNextFile();
// skip . and .. files; otherwise, we'd
// recur infinitely!
if (finder.IsDots())
continue;
// if it's a directory, recursively search it
if (finder.IsDirectory())
...{
CString str = finder.GetFilePath();
cout << (LPCTSTR) str << endl;
Recurse(str);
continue;
}
src = finder.GetRoot();
filetitle = finder.GetFileTitle();
filename = finder.GetFileName();
if (filename != filetitle)
continue;
src = src + _T("/") + filetitle;
dst = src + _T(".jpg");
//采用重命名部分
char * asicsrc = GetAnsicString(src);
char * asicdst = GetAnsicString(dst);
result = rename(asicsrc,asicdst);
if (result == 0 )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" );
free(asicdst);
free(asicsrc);
// 采用拷贝部分
//if (CopyFile(src, dst, FALSE))
//{
// dwAttrs = GetFileAttributes(src);
// if (dwAttrs==INVALID_FILE_ATTRIBUTES)
// return;
// if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
// {
// SetFileAttributes(dst,
// dwAttrs | FILE_ATTRIBUTE_READONLY);
// }
//}
//else
//{
// printf("Could not copy file. ");
// return;
//}
}
finder.Close();
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
...{
Recurse(_T("C:/Documents and Settings/null/Desktop/fadg0/video/"));
}
#include <string>
#include <string.h>
#include <string>
#include <afx.h>
using namespace std;
char* GetAnsicString(const CString &s)
...{
int nSize = (s.GetLength() + 1)*sizeof(TCHAR);
//char *pAnsicString = new char[nSize];
char * pAnsicString = (char *)malloc(nSize*sizeof(char));
ZeroMemory(pAnsicString, nSize);
wcstombs(pAnsicString, s, nSize);
return pAnsicString;
}
void Recurse(LPCTSTR pstr)
...{
CFileFind finder;
HANDLE hSearch;
DWORD dwAttrs;
TCHAR szDirPath[] = TEXT("C:/Documents and Settings/null/Desktop/fadg0/video/");
TCHAR szNewPath[MAX_PATH];
BOOL fFinished = FALSE;
// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("/*.*");
// start working for files
BOOL bWorking = finder.FindFile(strWildcard);
CString src,dst,filetitle,filename;
int result;
while (bWorking)
...{
bWorking = finder.FindNextFile();
// skip . and .. files; otherwise, we'd
// recur infinitely!
if (finder.IsDots())
continue;
// if it's a directory, recursively search it
if (finder.IsDirectory())
...{
CString str = finder.GetFilePath();
cout << (LPCTSTR) str << endl;
Recurse(str);
continue;
}
src = finder.GetRoot();
filetitle = finder.GetFileTitle();
filename = finder.GetFileName();
if (filename != filetitle)
continue;
src = src + _T("/") + filetitle;
dst = src + _T(".jpg");
//采用重命名部分
char * asicsrc = GetAnsicString(src);
char * asicdst = GetAnsicString(dst);
result = rename(asicsrc,asicdst);
if (result == 0 )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" );
free(asicdst);
free(asicsrc);
// 采用拷贝部分
//if (CopyFile(src, dst, FALSE))
//{
// dwAttrs = GetFileAttributes(src);
// if (dwAttrs==INVALID_FILE_ATTRIBUTES)
// return;
// if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
// {
// SetFileAttributes(dst,
// dwAttrs | FILE_ATTRIBUTE_READONLY);
// }
//}
//else
//{
// printf("Could not copy file. ");
// return;
//}
}
finder.Close();
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
...{
Recurse(_T("C:/Documents and Settings/null/Desktop/fadg0/video/"));
}
如果不需要保留,可以直接采用rename函数实现。
- 批量文件名修改
- 批量修改文件名
- 批量修改文件名
- 批量修改文件名
- 批量修改mp3文件名
- 批量修改文件名
- 批量修改文件名
- shell批量修改文件名
- Python批量修改文件名
- shell批量修改文件名
- 批量修改文件名
- 批量修改文件名
- JAVA批量修改文件名
- linux批量修改文件名
- php批量修改文件名
- shell 批量修改文件名
- 批量修改文件名
- python 批量修改文件名
- 论谢文创业的几点启示
- Java-InnerClass-02
- 阿里巴巴股票缘何大跌?
- Java-InnerClass-03
- Javascript网页滚动方法
- 批量文件名修改
- Java-InnerClass-04
- AppFuse struts2Basic : mvn appfuse:full-source Error
- 突然发现,几百年没写BLOG了,帖个代码(正归式到自动机)
- ajax方法的写法
- 美剧 迷失 最强剧情解释
- Unicode to Asic[ZZ]
- 由安天的招新--想到的
- Java-InnerClass-05