-1

注 : タグを C# および .NET に編集しました。

ここに画像の説明を入力

上の画像で、2009 フォルダーに .pdf ファイルがあることがわかります。私のタスクは、前の文字列を取得することです。前の文字列_は私の ID で、文字列はファイル名で、後ろ.は拡張子です。

これらはすべて、2009 フォルダーの下の Windows エクスプローラーにあるファイル名です。

SQLでは、最初のファイル名にこのように含まれる3つの列を持つテーブルを作成したいと考えています。

1-AXJUHC_65927302.pdf

私が必要とするSQLで

id             filename                   fileextension

1-AXJUHC       1-AXJUHC_65927302.pdf         pdf

すべてのファイル名に対してそのような方法。

誰かがbashまたは他のツールを使用してWindowsレベルで上記のフィールドを抽出し、このID、filname、fileextensionをテキストファイルに書き込む方法を教えてくれたら、それをSQLに挿入できます。

4

3 に答える 3

2

C# http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspxで FileInfo クラスを使用して、完全なファイル名と拡張子を取得します。

FileInfo file = new FileInfo(@"path");<br/>
string sFileName = file.Name;<br/>
string sExtension = file.Extension;

IDの最初の部分を取得するには、次のように使用します

srting [] sFilename = sFileName.Split('_');
string sId = sFilename[0];

編集:

ディレクトリ内のすべてのファイルを取得するには:

Foreach(string path in Directory.GetFiles(@"Some_Path_Here"))<br/>
{`enter the code mentioned above here`}
于 2012-05-23T09:11:01.900 に答える
1
foreach ( string filePath in System.IO.Directory.EnumerateFiles ( pathOfDirectory ) )
{
    string filename = System.IO.Path.GetFileName ( filePath );
    string id = filename.Substring ( 0 , filename.IndexOf ( '_' ) );
    string extension = filename.Substring ( filename.LastIndexOf ( '.' ) + 1 );
}

MrGTgo で提案されているように FileInfo クラスを使用できますが、必要以上のデータを読み取ります。

于 2012-05-23T10:00:35.603 に答える
0

次のようなことができます:

必要に応じてファイルを取得しPathます [Let it be filepath] :

次に、次を使用できます。

using System.IO;

string filename = Path.GetFileName(filepath); // returns "1-AXJUHC_65927302.pdf"
string id = Path.GetFileNameWithoutExtension(filename.Replace(".", "~").Replace("_", ".")).Replace("~", "."); // for "1-AXJUHC_65927302.pdf", returns "1-AXJUHC"
string fileextension = Path.GetExtension(filename).Substring(1);// returns "pdf"
于 2012-05-23T09:29:34.783 に答える