(VBA)bat処理の結果がおかしい
以下の1)から5)までをVBAで行いたいのですが
1)、2)までのコードはネットを参考に作成したのですが
2)の結果が¥tempに書き出されませんでした。
(C:¥に直接書き出される)
原因は何でしょうか ?
(コードの修正をお願いします。)
以下は、行いたい事のイメージ。--------------------------------------------------
1)指定ディレクトリにディレクトリ(C:\)に保存した
BATファイル(aa.bat)をコピーする
2)指定ディレクトリ内でaa.batを起動する
3)指定ディレクトリーに最初から存在したフォルダーを削除する
4)aa.batによって作成されたフォルダーを最初のフォルダー名に変名する
5)aa.batをコピー先から削除する
例:指定ディレクトリをC:¥temp、aa.batをC:\tempにコピーしたと
C:¥temp¥AA
C:¥temp\AA¥subAA
C:\temp\aa.bat
aa.batを\temp内で起動した後で ------>を実施
C:¥AA ------> 削除
C:¥AA_SUBAA ------> C:\AAに変名
C:\temp\aa.bat -----> 削除
最終的に
C:¥temp\AA
---------------------------------------
Sub Test()
Dim strPath As String
Dim intPathLen As Integer
Dim intR As Integer
Dim F As Variant
Dim obj As WshShell
Dim sPath
'Range("A5:F100").Clear
' フォルダーを自由に選べること。 参考:officeTANAKA
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
' MsgBox .SelectedItems(1)
If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合
mypath = .SelectedItems(1)
Else
mypath = .SelectedItems(1) & "\"
End If
End If
End With
If mypath = Empty Then MsgBox "フォルダー名の指定をキャンセルしました。": Exit Sub
MyName = Dir(mypath, vbDirectory) ' 最初のフォルダ名を返します。
’Range("A2") = mypath 'コピー先フォルダーの指定
'BATファイルのコピー
FileCopy "C:\aa.bat", mypath & "aa.bat"
'batファイルの起動
sPath = mypath & "\aa.bat"
Set obj = New WshShell
Call obj.Run(sPath, WaitOnReturn:=True)
End Sub
-------------------------------------------------------------------
以下は、aa.batの内容です。
for /d %%i in (*) do (
pushd .
cd %%i
for /d %%j in (*) do ren "%%j" "%%i_%%j"
for /d %%k in (*) do ren "%%k" "../%%k"
popd
rd "%%i"
)
-------------------------------------------