// dirlist.cpp : コンソール アプリケーションのエントリ // ポイントを定義します。 // #include "stdafx.h" #include #include #include #define VERSION "1.0" void ShowDirectory ( LPCTSTR pDirName ); int _tmain( int argc, _TCHAR* argv[] ) { wchar_t pStartDir[1024]; setlocale( LC_ALL, "JPN" ); if ( argc < 2 ) { // 引数が指定されなかった場合 // 実行時のディレクトリ配下を表示する。 wcscpy_s( pStartDir, sizeof( pStartDir ), L".\\" ); } else { if ( wcscmp( argv[1], L"-v" ) == 0 ) { printf( "Version %s", VERSION ); return 0; } wcscpy_s( pStartDir, sizeof( pStartDir ), argv[1] ); } printf( "パス\tファイル名" ); printf( "\t作成日時\t最終更新日時\t実サイズ\n" ); ShowDirectory( pStartDir ); return 0; } void ShowDirectory( LPCTSTR pDirName ) { HANDLE dno; WIN32_FIND_DATA fil; wchar_t pFind[1024]; wsprintf( pFind, L"%s\\*", pDirName ); dno = FindFirstFile( pFind, &fil ); if ( dno != INVALID_HANDLE_VALUE ) { BOOL ret = true; while( true ) { if ( ( ( wcscmp( L".", fil.cFileName ) == 0 ) && ( fil.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY ) ) || ( ( wcscmp( L"..", fil.cFileName ) == 0 ) && ( fil.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY ) ) ) { ; } else { wprintf( L"%s", pDirName ); if ( fil.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY ) { printf( "\t\n" ); wsprintf( pFind , L"%s\\%s" , pDirName , fil.cFileName ); ShowDirectory( pFind ); } else { wprintf( L"\t%s", fil.cFileName ); SYSTEMTIME TimeBuf ; // 作成日時 FileTimeToSystemTime( &fil.ftCreationTime , &TimeBuf ); printf( "\t%04d/%02d/%02d %02d:%02d:%02d" , TimeBuf.wYear , TimeBuf.wMonth , TimeBuf.wDay , TimeBuf.wHour , TimeBuf.wMinute , TimeBuf.wSecond ); // 最終更新日時 FileTimeToSystemTime( &fil.ftLastWriteTime , &TimeBuf ); printf( "\t%04d/%02d/%02d %02d:%02d:%02d" , TimeBuf.wYear , TimeBuf.wMonth , TimeBuf.wDay , TimeBuf.wHour , TimeBuf.wMinute , TimeBuf.wSecond ); // ファイルサイズ INT64 iFileSize = 0; iFileSize = iFileSize | ( fil.nFileSizeHigh << 4 ) | fil.nFileSizeLow; printf( "\t%ld", iFileSize ); printf( "\n" ); } } ret = FindNextFile( dno, &fil ); if ( ! ret ) { break; } } } else { printf( "INVALID_HANDLE_VALUE\n" ); } FindClose( dno ); }