注意:我已经将标签编辑为C#和.NET。
你可以在上面的图片中看到我在2009文件夹中的.pdf文件现在我的任务是获取_
之前的字符串,这是我的id,字符串是文件名,后面是{{1是扩展名。
这些都是我在2009资源管理器下的Windows资源管理器中的文件名。
在sql中我想创建一个包含三列的表,其中包含第一个文件名。
.
在sql中我需要
1-AXJUHC_65927302.pdf
这种方式适用于所有文件名。
如果有人建议我如何使用bash或任何其他工具在Windows级别提取上述字段,然后将此id,filname,fileextension写入文本文件然后 我可以将它插入到sql中。
答案 0 :(得分: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`}
答案 1 :(得分: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类,但是它会读取比你需要的更多的数据。
答案 2 :(得分:0)
您可以这样做:
根据需要获取文件的Path
[让它成为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"