ファイルを新しい名前の新しいフォルダーに一括移動しようとしています。たとえば、次の場所からすべてのファイルを移動したいとします。
C:\猫\
C:\犬\
に:
C:\test\cat-1234\
C:\test\dog-2477\
この方法で移動したいフォルダが約 400 個あります。
宛先フォルダーには、常に元のフォルダー名が含まれます。
ファイルを新しい名前の新しいフォルダーに一括移動しようとしています。たとえば、次の場所からすべてのファイルを移動したいとします。
C:\猫\
C:\犬\
に:
C:\test\cat-1234\
C:\test\dog-2477\
この方法で移動したいフォルダが約 400 個あります。
宛先フォルダーには、常に元のフォルダー名が含まれます。
はい、あるフォルダーから別のフォルダーにファイルをコピーできます。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
バッチプログラムを書いたとしても、OSは一度に1つのファイルしか実行できないため、一括移動などはないと思います。