自分のPCのバックアップ先として使用していた外付けハードディスクがあります。それから、私はそれを回復しなければならなかった、明らかにそれは読めなくなった。リカバリプログラムは、すべてのファイルをHDのルートに入れて、メインフォルダに300.000個のファイルを保存します。外部HDのルートにある膨大な数のファイルを削除します
フォルダ内の拡張子に従って、ファイル(JPG、3GP、TIFF、C/Hヘッダーなど)を再構成しました。それから私はまだバックアップのどこかから来た.htmlと.htmファイルの膨大な(60.000)個のファイルを持っています.Windows 10のエクスプローラ(フリーズ)から移動または削除できません。
主な課題は以下のとおりです。
- ファイルは私のHDのルートにある - >私は(どちらも私はフォルダにコピーすることはできない、またはすべてがフリーズ) 削除ディレクトリのコマンドを使用することはできません、私は私が実際にうまく働いたこのCプログラムを書いた
十分な空の収納スペースを持っていないので、HDで
私の質問は、このプログラムを使用することの難点と改善方法を教えてください。
コードは:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
void makeStr (char* fileName, char* file)
{
static char* str = "F:/";
//Build the string
sprintf (fileName, "%s%s", str, file);
return;
}
int main (void)
{
DIR *dp;
struct dirent *ep;
dp = opendir ("F:/");
char* ext;
char name[260];
int count = 0;
const char* format1 = "html";
const char* format2 = "htm";
if (dp != NULL)
{
// Look in the folder
while (((ep = readdir (dp)) != NULL) || count < 60000)
{
count++;
// Find files with an associated file type
ext = strrchr(ep->d_name, '.');
if (!ext)
{
/* no extension */
}
else
{
if (memcmp((char*)format1, (char*)(ext + 1), 4) == 0)
{
makeStr(name, ep->d_name);
if(remove(name) == -1)
{
printf ("ERROR REMOVING %s\n", ep->d_name);
//exit(-1);
}
}
else if (memcmp((char*)format2, (char*)(ext + 1), 3) == 0)
{
makeStr(name, ep->d_name);
if(remove(name) == -1)
{
printf ("ERROR REMOVING %s\n", ep->d_name);
//exit(-1);
}
else if (count % 100 == 0)
{
printf("Going well: %d files removed . . .\n",count);
}
}
}
//printf ("%s\n", ep->d_name);
}
closedir (dp);
}
else
printf ("Couldn't open the directory");
return 0;
}
作業コードを改善する方法についての質問は、スタックオーバーフローのトピック外であるため、このトピックを議論の対象外としています。そのような質問は、Code Reviewでルールと標準に従って尋ねる必要があります。 – TylerH
私はこのトピックを議論の対象外として議論しています。なぜなら、より重視されたコーディングの問題を扱うStack Overflowでは広すぎるためです。作業コードの改善に関する助言については、代わりに[codereview.se]を検討してください。しかし、まず、[Stack Overflowユーザーのためのコードレビューのガイド](// codereview.meta.stackexchange.com/a/5778)を読んでください。そこには違ったやり方で行われました! –