2011-05-04 3 views
1

아래 코드는 서로 다른 파일 이름을 기반으로 여러 폴더를 만들고 해당 파일을 새 폴더로 이동합니다. 예를 들어, 파일 ABC 및 XYZ는 ABC 및 XYZ라는 새로 생성 된 폴더로 이동됩니다. 약간 다른 파일 이름이 공용 폴더로 들어가도록 코드를 향상시키고 싶습니다. 예를 들어 ABC_rock, ABC_soil 및 ABC_water 파일을 ABC라는 폴더에 넣고 XYZ_rock, XYZ_soil 및 XYZ_water 파일을 XYZ라는 폴더에 넣기를 원합니다. ABC_rock, ABC_soil 및 ABC_water에 대해 별도의 폴더를 만들지는 않습니다. 어떤 제안이라도 대단히 감사하겠습니다. 도와 줘서 고마워.VB.NET 파일 이름을 기반으로 폴더 만들기

 Dim strOutputLocation As String = "C:\Temp" 
     Dim rootPath As String = strOutputLocation 

     For Each filepath As String In IO.Directory.GetFiles(rootPath) 

      Dim folderName As String = IO.Path.GetFileNameWithoutExtension(filepath) 
      Dim folderPath As String = IO.Path.Combine(rootPath, folderName) 

      If Not IO.Directory.Exists(folderPath) Then 
       IO.Directory.CreateDirectory(folderPath) 
      End If 

      Dim fileName2 As String = IO.Path.GetFileName(filepath) 
      Dim newFilePath As String = IO.Path.Combine(folderPath, fileName2) 

      File.Move(filepath, newFilePath) 

     Next 

답변

2

처음부터 파일 이름을 분리하십시오 - 여기서 밑줄을 사용하고 있지만 필요하면 변경할 수 있습니다. 분할은 모든 경우에 적어도 하나 개의 항목을 만들 것입니다, 당신은 첫 번째 부분에만 관심이 있다면, 당신은 한 줄 변경하여이 문제를 처리 할 수 ​​있습니다 밑줄이 있다면

Dim folderName As String = IO.Path.GetFileNameWithoutExtension(filepath).Split("_")(0) 

를, 그것은 전에 먼저 모든 것을 사용 하나. 밑줄이 없으면 전체 파일 이름을 사용합니다.

+0

감사합니다. – artwork21

+0

__ 대신 두 개의 밑줄로 쪼개려고했으나 첫 번째 _ 인스턴스로 쪼개졌습니다. __로 분할하는 방법은 무엇입니까? – artwork21

0

당신이 당신의 분리 문자는 파일 이름을 추출 후 다음 .Split() 같은 간단한 일을 사용할 수있을 것입니다 무엇을 알고있는 경우. 파일 이름이 그보다 복잡하면 RegEx을 사용해야합니다.

var fileName = "ABC_rock"; 
var parts = fileName.Split(new String[] { "_" }, System.StringSplitOptions.RemoveEmptyEntries); 
if (parts.Length >= 1) { 
    var folderName = parts[0]; 

    // Move fileName here... 
} 

위의 코드는 밑줄 문자가 있다고 가정합니다.

0

모든 파일 이름의 형식이 PREFIX_somethingElse 인 경우 각 파일 이름에 Split() 함수를 사용하여 공통 접두사를 찾을 수 있습니다. 모든 접두사 목록을 얻은 후에는이 접두어를 사용하여 폴더를 만든 다음 각 파일을 접두어로 지정한 폴더로 옮길 수 있습니다.

이렇게하려면 Split() 함수를 사용하기 위해 파일 이름의 구분 문자를 알아야합니다.

  1. 접두사를 얻고 당신이 목록
  2. 에 찾아 각각의 새로운 접두사를 추가 분할()를 사용하여 파일 이름을 문자열
  3. 으로 반복을의 목록을 선언 :

    과정은 다음과 같이 될 것입니다

  4. 목록을 반복하여 각 접두사에 대해 폴더를 만듭니다.
  5. 파일 이름을 반복하고 각 파일을이라는 폴더로 이동하십시오 해당 파일 이름 앞에접두어가 붙습니다.

반복적 인 반복을 피하기 위해 더 복잡한 데이터 구조를 사용하면 프로세스가 크게 최적화 될 수 있지만 이는 기본적인 아이디어입니다.

관련 문제