2016-10-04 5 views
0

폴더에 수천 개의 이미지 파일이 있고 프로그램이 자동으로 새 폴더를 만들고 각 폴더에 50 개의 파일을 넣기를 원합니다. 어떤 아이디어?파일을 폴더로 이동

+1

예, Windows powershell을 사용하는 방법에 대해 알아보십시오. https://en.wikipedia.org/wiki/PowerShell ... 그런 식으로 "케이크 한 조각"이어야합니다. – GhostCat

+0

GhostCat이 언급했듯이 PowerShell을 사용할 수 있습니다. Windows 배치가 또 다른 옵션입니다. 하나를 작성한 후에는 여러 번 실행해야 할 경우 Windows 작업 스케줄러를 사용할 수 있습니다. –

답변

0

이런 식으로;

int i = 0; 

string[] filePaths = Directory.GetFiles(@"C:\ALLFILESHERE\"); 

foreach (string fileName in filePaths) 
{ 
     i++; 

     bool exists = System.IO.Directory.Exists(Server.MapPath(i)); 

     if(!exists) 
      System.IO.Directory.CreateDirectory(Server.MapPath(i)); 

     for (int j = 1; j < 50; i++) 
     { 
      try 
      { 
       var to = System.IO.Path.Combine(@"C:\i\", fileName); 

       File.Move(fileName , to); // Try to move 
       Console.WriteLine("Moved"); // Success 
      } 
      catch (IOException ex) 
      { 
       Console.WriteLine(ex); // Write error 
      } 
     } 
    } 
0

파일을 갖는 이름을 생성 파일 안에 아래의 내용을 붙여 당신이 수천 개의 파일이있는 폴더 안에 배치, movefiles.bat을 말한다. 이제 cmd을 열고 bat 파일을 실행하거나 bat file을 두 번 클릭하십시오.

@ECHO on 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET foldersize=30 
SET counter=1 
SET numFiles=0 
::extension of the to be mentioned here as *.txt or *.jpg etc 
FOR %%f IN (*.jpg) DO (
IF !counter!==1 (
SET /A numFiles+=1 
MD folder!numFiles! 
) 
MOVE /Y "%%f" folder!numFiles! 
IF !counter!==!foldersize! (
SET counter=1 
) ELSE (
SET /A counter+=1 
) 
) 
ENDLOCAL 
PAUSE 

이 폴더를 생성하고 foldersize에 지정된 파일의 수를 둘 것이다.

+0

이것이 작동하지 않습니다 – Ela

+0

@ 엘라 무슨 일을하고 있지 않습니까? 내 폴더와 작업에서 이것을 시도했습니다. 이동하려는 파일 확장자는 무엇입니까? 이 줄에있는 확장자'FOR %% f IN (* .jpg) DO'를 확장자'* .jpg'에서'* .txt'로 변경하거나 다른 어떤 것 –

+0

덕분에 성공했습니다. 그 폴더는 다양한 형식의 파일을 포함하고 있습니다. 그게 문제 였어. – Ela

관련 문제