0

ファイルを新しい名前の新しいフォルダーに一括移動しようとしています。たとえば、次の場所からすべてのファイルを移動したいとします。

C:\猫\
C:\犬\

に:

C:\test\cat-1234\
C:\test\dog-2477\

この方法で移動したいフォルダが約 400 個あります。

宛先フォルダーには、常に元のフォルダー名が含まれます。

4

2 に答える 2

1

はい、あるフォルダーから別のフォルダーにファイルをコピーできます。API を使用できますSHFileOperation:) Windows がファイルを 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
于 2012-05-08T16:41:48.660 に答える
0

バッチプログラムを書いたとしても、OSは一度に1つのファイルしか実行できないため、一括移動などはないと思います。

于 2012-05-08T16:26:37.447 に答える