• 締切済み

ご回答お願いします。バッチファイルの下記方法がどうしてもうまくいかない

ご回答お願いします。バッチファイルの下記方法がどうしてもうまくいかないので、助けてください。 Aフォルダは残したまま、Aフォルダ内にあるフォルダのみ、Bフォルダに移動したいと思っております。移動後はAフォルダ内にあるフォルダは削除します。バックアップがしたいのですが・・・。 1、Aフォルダ内のフォルダは、様々なデータを保存していますのでフォルダ名がすべて違います。 2、moveを使ったのですが、Aフォルダごと移動してしまい、Aフォルダが消えてしまいます。 どうかご協力お願い致します。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

move でも xcopy でも 指定したフォルダの下からを対象とすることは出来そうにないですね。 ※私が知らないだけかもしれませんが・・・ なので mkdir で消えたフォルダを作っては如何?

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

質問内容は、Office のカテゴリではありませんが、回答者側が、ご質問程度の内容が分からないようなら、一応VBAプログラマとして、「失格」になってしまいます。しかし、もう、バッチ・プログラムはMS-DOS時代に忘れられたものだと思います。 以下は、VBS(WScript) ですから、メモ帳などで、以下を貼り付けて、ファイル名は、ファイル名.vbs (要拡張子)でファイル名を付けてください。ただし、絶対に、[全角スペース]はいれないでください。なお、移動したくないフォルダは、アトリビュートを、ReadOnlyにすれば、移動しません。出来たファイルをクリックすれば、実行します。 ただし、以下は、固定フォルダですから、選択する場合は、二番目のプログラムを使ってください。 'MoveFolder.vbs Dim objFSO Dim objFolder Dim subF Dim cnt Const vbDirectory =16 Const SrcFolder ="C:\My Documents\AFold\" '元のフォルダ Const DestFolder ="C:\My Documents\BFold\" '目的のフォルダ Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(SrcFolder) For Each subF In objFolder.SubFolders If subF.Attributes = vbDirectory Then objFSO.MoveFolder subF, DestFolder cnt = cnt +1 End If Next If cnt >0 Then MsgBox cnt & " 個移動しました。",64 Else MsgBox "該当フォルダが見つかりませんでした。",48 End If '//二番目 'MoveFolders.vbs Public objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") '目的のフォルダ*必ず、最後に\ は入れてください。 Const DestFolder ="C:\My Documents\BFold\" If objFSO.FolderExists(DestFolder) And Right(DestFolder,1) = "\" Then Call MoveFolder(DestFolder) Else MsgBox "目的のフォルダの記述が違うようです。",48 End If Sub MoveFolder(DestFolder) Dim objShell Dim curDr Dim objFolder Dim SrcFolder Dim objSFolder Dim subF Dim cnt Const vbDirectory =16 Const ssfPERSONAL = 5 Set objShell=CreateObject("Shell.Application") Set objSFolder = objShell.BrowseForFolder(0,"データフォルダを選んでください。",0,ssfPERSONAL) If Not objSFolder Is Nothing Then SrcFolder = objSFolder.Items.Item.Path If Left(SrcFolder,Len(SrcFolder)-1) = DestFolder Then MsgBox "ソースフォルダと目的のフォルダは同じです。",48 Exit Sub End If Set objFolder = objFSO.GetFolder(SrcFolder) For Each subF In objFolder.SubFolders If subF.Attributes = vbDirectory Then objFSO.MoveFolder subF, DestFolder cnt = cnt +1 End If Next If cnt >0 Then MsgBox cnt & " 個移動しました。",64 Else MsgBox "該当フォルダが見つかりませんでした。",48 End If End If End Sub

すると、全ての回答が全文表示されます。

関連するQ&A