2014-12-03 3 views
0

일부 단어가 포함 된 하나의 디렉토리에서 모든 파일/폴더를 이동하고 다른 단어로 이동할 수 있습니까? 예를 들어 'Testing this'라는 파일/폴더를 다른 폴더로 옮기는 경우? 나는 다음을 시도하지만 그것이 작동하지 않습니까? '이것을 테스트하는'이라는 단어는 파일 이름의 아무 곳에 나 표시 될 수 있습니다.vb.net을 사용하여 여러 파일을 이동하는 방법

Dim directory = "C:\Test\" 
     For Each filename As String In IO.Directory.GetFiles(directory, "testing this", IO.SearchOption.AllDirectories) 
      My.Computer.FileSystem.MoveFile(filename, "C:\Test\Old\" & "testing this") 
     Next 

답변

1

아니, My.Computer.FIlesSystem.MoveFile 각 호출에 대해 하나의 파일을 이동할 수 있습니다.
당신은 소스 디렉토리의 주위에 루프를 구축 한

Dim sourceDir = "C:\test" 
For Each file As String In My.Computer.FileSystem.GetFiles(sourceDir, _ 

    Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*testing this*") 

    Dim destPath = file.Substring(sourceDir.Length + 1) 
    Dim destFile = System.IO.Path.GetFileName(file) 

    My.Computer.FileSystem.MoveFile(file, _ 
       System.IO.Path.Combine("C:\Test\Old", destPath, destFile)) 
Next 
+0

안녕하세요, 그것은 파일 이름이 선언되지 않았다고 말합니까? – JackSparrow

+0

위의 코드에서 사용한 원래 변수를 사용했습니다. 고정 된 문자열로 변경할 수 있습니다. – Steve

+0

감사 메이트, 그냥 모든 파일과 폴더를 "* 테스트이 *"뿐만 아니라 파일을 포함하는 이동 싶었을 한가지 더, 그게 가능 한가? – JackSparrow

1

와일드 카드는 GetFiles 메서드에서 사용할 수 있습니다. 그래서

는 :

Dim directory = "C:\Test\" 
     For Each filename As String In IO.Directory.GetFiles(directory, "*testing this*", IO.SearchOption.AllDirectories) 
      My.Computer.FileSystem.MoveFile(filename, "C:\Test\Old\" & "testing this") 
     Next 
+0

환호 친구에 의해 각 파일을 이동해야, 줄 것이다 그것에 대해 생각하지만, 주위를 잘못 WA 있었다 된 이동 * "이 테스트" * – JackSparrow

+0

안녕하세요 친구, 고마워, 다른 질문 제발 어떻게 파일/폴더의 동일한 이름을 통해 복사합니까 다음 코딩을 시도하지만 오류가 발생 My.Computer.FileSystem.MoveFile (파일 이름, "C : \ 테스트 \ 올드 \) 오류가 있습니다 주어진 파일 경로가 디렉토리 구분 문자로 끝납니다 매개 변수 이름 : destinationFileName – JackSparrow

+0

내 대답이 귀하의 질문을 해결할 경우 대답으로 표시하십시오. 아래의 @ Steve의 대답이 귀하의 다른 질문을 해결할 것이라고 생각합니다. – Brandon

관련 문제