2012-05-08 5 views
0

새 이름을 가진 새 폴더로 파일을 대량 이동하려고합니다.비슷한 이름의 폴더로 파일을 대량 이동하는 방법은 무엇입니까?

C : 예를 들어, 나는 모든 파일을 이동할 \ 고양이 \
C : \ 개

\

사람 :

C : \ 테스트 \ 고양이-1234
C : \ \ test \ dog-2477 \

나는이 방법으로 이동하려는 약 400 개의 폴더가 있습니다.

대상 폴더는 항상 원래 폴더 이름을 포함합니다.

+0

VBA를 사용하여 파일을 이동하려는 이유는 무엇입니까? 아마도 그렇게하는 데 가장 적합한 언어는 아닙니다. – assylias

+0

@assylias이 작업을 수행하는 데 적합한 언어는 무엇입니까? VBA를 사용하려는 유일한 이유는 문제가있는 경우 코드를 디버깅 할 수 있기 때문입니다. PowerShell 스크립트가 아마도 최고 일 것이라고 생각하지만 PS에 익숙하지 않습니다. – toolshed

+0

나는 PS에 익숙하지 않지만 쉘 스크립트가 잘 할 수 있다고 생각했을 것이다. – assylias

답변

1

예. 한 폴더에서 다른 폴더로 파일을 복사 할 수 있습니다. 당신은 SHFileOperation API를 사용할 수 있습니다 :) 그것은 또한 당신에게 윈도우가 1 폴더에서 다른 파일을 복사 할 때 볼 애니메이션 모양을 줄 것입니다 :) 여기에 예제가 있습니다. 귀하의 실제 필요에 맞게 수정하십시오.

Option Explicit 

Private Declare Function SHFileOperation _ 
Lib "shell32.dll" Alias "SHFileOperationA" _ 
(lpFileOp As SHFILEOPSTRUCT) As Long 

Private Type SHFILEOPSTRUCT 
    hWnd As Long 
    wFunc As Long 
    pFrom As String 
    pTo As String 
    fFlags As Integer 
    fAborted As Boolean 
    hNameMaps As Long 
    sProgress As String 
End Type 

Private Const FO_COPY = &H2 

Sub Sample() 
    Dim FilePath1 As String, FilePath2 As String 

    FilePath1 = "C:\cat" 
    FilePath2 = "C:\test\cat-1234" 

    '~~> Usage ~~> CopyFolder(From,To) 
    '~~> Example ~~> CopyFolder("C:\Temp\1","C:\Temp\2") 
    If CopyFolder(FilePath1, FilePath2) Then 
     MsgBox "Copied" 
    Else 
     MsgBox "Not copied" 
    End If 
End Sub 

Private Function CopyFolder(ByVal sFrom As String, _ 
ByVal sTo As String) As Boolean 
    Dim SHFileOp As SHFILEOPSTRUCT 
    On Error GoTo Whoa 
    CopyFolder = False 
    With SHFileOp 
     .wFunc = FO_COPY 
     .pFrom = sFrom 
     .pTo = sTo 
    End With 
    SHFileOperation SHFileOp 
    CopyFolder = True 
    Exit Function 
Whoa: 
    MsgBox "Following error occurd while copying folder " & sFrom & vbCrLf & _ 
    Err.Description, vbExclamation, "Error message" 
End Function 
+0

감사합니다 Siddharth, 이것은 올바른 방향으로 나를 잡았어! – toolshed

0

일괄 처리와 같은 것은 존재하지 않는다고 생각합니다. 배치 프로그램을 작성하더라도 OS는 한 번에 하나의 파일 만 처리 할 것입니다.

관련 문제