2012-05-08 18 views
0

ファイルを新しい名前の新しいフォルダに一括移動しようとしています。ファイルを同様の名前のフォルダに一括移動する方法はありますか?

C:例えば、私はからすべてのファイルを移動したい\猫\
C:\犬

\

へ:

C:\テスト\猫-1234
C \: \ test \ dog-2477 \

私はこのように移動したい約400のフォルダを持っています。

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

+0

VBAを使用してファイルを移動する理由は何ですか?それを行うには、おそらく最も適切な言語ではありません。 – assylias

+0

@assyliasこれを行うには適切な言語は何でしょうか?私がVBAを使用したかったのは、問題があればコードをデバッグできるということだけでした。私はPowerShellスクリプトがおそらく最も良いと思いますが、私はPSにあまり慣れていません。 – toolshed

+0

私はPSにも慣れていませんが、シェルスクリプトがうまくいくと思っていました。 – assylias

答えて

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 
+0

ありがとうSiddharth、これは正しいトラックで私を得た! – toolshed

0

バッチプログラムを書いたとしても、バルクムーブのようなものはないと思いますが、OSはその時点で1つのファイルにしかできません。

関連する問題