• 締切済み

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

ご回答お願いします。バッチファイルの下記方法がどうしてもうまくいかないので、助けてください。 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

  • バッチファイルについて質問

    下記のようなバッチファイルを作りたいのですが 教えていただけませんでしょうか? A:自分PC B:ファイルサーバー とする 内容は、 Aを起動する時に自動でバッチファイルが起動して、 Aの中にあるCドライブのファイルを、 Bのファイルサーバーの一定のフォルダ内へ自動保存する。 Bへ保存するファイル名は、『YYYYMMDD』として、 2ヶ月分保存する。 2ヶ月以上保存する場合は、古い順に自動削除する。

  • バッチファイルで、ファイル名から自動振分したい

     C:\B\の中に、必ず「半角数字4桁_」から始まるファイル名のデータが毎週入ります。  「半角数字4桁_」以後のファイル名、拡張子は、その週によって変わります。  C:\A\の中には、必ず「_半角数字4桁_」で終わるフォルダ名のサブフォルダがあります。  このフォルダ名は、ずっと変わることがありません。  C:\B\の中にあるデータを、ファイル名の最初の4桁の数字をもとに、C:\A\にあるサブフォルダに自動で移動したいです。また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。 フォルダ構成です。 Cー|    |-【A】    |   |-【あいう_1234】    |  |-【あい_2235】    |   |-【かきくけ_8990】    |   |-【アイウエオ_5014】    |    |-【B】    |   |-1234_ABC.txt    ←このファイルは C:\A\【あいう_1234】に。    |  |-2235_1534.txt   ←このファイルは C:\A\【あい_2235】に。    |   |-8990_22.doc     ←このファイルは C:\A\【かきくけ_8990】に。    |   |-5014_わをん.doc   ←このファイルは C:\A\【アイウエオ_5014】に。   自分でバッチファイルを記述してみたのですが、ここからどうしていいか分かりません。  どなたか教えてもらえないでしょうか? よろしくお願いします。    自分で記述してみたバッチファイルです。 cd C:\B dir /b > C:\C\list.txt set folder=C:\A set file=C:\B set Bat=C:\C for /f "delims=" %%a in ( %Bat%\list.txt ) do if exist "%file%\%%a" move "%folder%\%%a" "%to%" PAUSE > NUL

  • テキスト内の文字列をファイル名にして保存するバッチ

    テキスト内のデータをファイルとして保存するバッチを作成したいです。テキスト内のデータをフォルダ名として保存する方法は見つけたのですがテキストとして保存する方法がわからずご教示いただけますと助かります。 例)テキストファイル名:File_List.txt -----テキスト内のデータ------- 会社名A 会社名B 会社名C ------------------------------------------ 実現したいこと 下記のようにテキスト内のデータをファイル名としてそれぞれ保存したい。 会社名A.txt 会社名B.txt 会社名C.txt テキスト内のデータをフォルダ名にするバッチは以下でした。 for /f %%a in (%1) do md %%a Windowsサーバにてバッチを利用します。

  • バッチファイルのコマンドについて

    バッチファイルのコマンドについて ウィンドウズです。 バッチファイルにて、大量のファイルの名前を以下の通りにリネームしたいです。 どのようにコマンドを組めばいいのか教えてください。 また、リネームしたファイルは1つ上のフォルダに移動させたいです。 1、ファイルの1~3文字目を削除してリネームして移動するコマンドデータ 2、ファイルの3~5文字目を削除してリネームして移動するコマンドデータ 例:『123456789』というファイル名に対して、 『456789』というファイル名にして移動するコマンドと 『126789』というファイル名にして移動するコマンドが欲しいです。 データは、名前も文字数もバラバラです。 知っている方がいたらお願いします。

  • バックアップ用バッチファイルの作成方法

    作業用フォルダを日次でバックアップを取るバッチファイルを作成し、それをスケジューラーに登録して自動でバックアップを取れるようにしようと思っています。 下記のようなルールでバッチファイルを作成しようと考えていますが、バッチファイルの作成に詳しい方がいらっしゃったら教えていただけないでしょうか? --- (1)バックアップ作成時は、指定のフォルダをZIP形式で圧縮してバックアップをとる (2)サブフォルダ内のOLDフォルダ内のファイルはバックアップ対象外 (3)ファイル名はYYYYMMDD.zipとして保存 現在、winzipというZIP用のアプリケーションを使用しており、wzzipというコマンドでコマンドライン上から圧縮が可能なので、それを使用したいと思っています。 一旦OLDフォルダを除いたものをテンポラリフォルダに入れて、それを圧縮(環境変数か何かから日付を持ってきて、ファイル名を指定して)するのがいいのかなとは考えているのですが、実際のコマンドの書き方がわかりません。 ご存知の方がいらっしゃいましたら、よろしくお願い致します。

  • バッチファイルの使い方について

    このサイトで、両面スキャンした画像ファイルを表面と裏面を別々のフォルダに振り分ける方法を質問して、バッチファイルを使う方法を教えてもらったのですが、上手くいきません。バッチファイルを使うのは初めてなので、どこかまずいところがあるのかと思います。 教えていただいた下記のものそのままでバッチファイルを作り、画像ファイル(jpg)を格納したフォルダに置いてダブルクリックすると、「1」「2」のフォルダができるだけで、画像ファイルは移動せず、2つのフォルダは空のままです。 どこを直せばよいのか教えてください。よろしくお願いします。 set N=1 mkdir 1 mkdir 2 for %%I in (*.jpg) do call :sub %%I goto :EOF :sub move %%I %N% set /a N=3-N goto :EOF

  • 条件分岐のバッチファイル

    「D&Dした複数ファイルを、そのファイル名と同名のフォルダ(既に作成済み)の中にある、Aというフォルダに移動する。」という動作をするバッチファイルを、以前の質問などを参考にしながらわからないなりに作ってみました。 :LOOP if %1 == "" GOTO XEND move %1 "C:\Documents and Settings\(ユーザー名)\デスクトップ\%~n1\A" SHIFT GOTO LOOP :XEND PAUSE これで動作したのですが、これにさらに 「ファイルの拡張子がjpgならフォルダAへ、bmpならフォルダBへ、  pngかつファイルサイズが2MB以下ならばフォルダCへ、それ以上ならフォルダDへ移動」 という動作を追加したいです。結構複雑なのですが、これはバッチファイルで可能なのでしょうか? 長文の上、わかりにくくてすいません。 可能ならば、どなたか教えていただけないでしょうか。よろしくお願いします。

  • バッチファイルについて

    pcのOSは全てwindows98です。 PCが上司機1台、社員機20台あるとします。ピアツーピアでネットワーク化しています。各社員機20台はCドライブの「Mydocument」フォルダと「データ」フォルダが共有されています。必要な時に上司機からネットワークアイコンを開いて各社員機の共有されている2つのフォルダの中を消したりしています。ここで質問します。 そこで上司機からバッチファイルで一度に「Mydocument」フォルダと「データ」フォルダの中身を消すということをしたいのです。ちなみに「Mydocument」は中のデータを全て消すのではなく必要なものもあるので、「Mydocument」を別のフォルダ(C\バックアップフォルダ)にコピーしていて、そのコピー先の「C\バックアップフォルダ\ Mydocument」をCドライブにコピーして置き換えるという風なバッチファイルを作りたいです。以上のようなバッチファイルはどんな文になりますか?本当はバッチファイルを勉強したらよいのですが、どうしてもすぐに作りたいのでどんな文になるのか実際に作った文を見せてください。お願いします。

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)

  • 指定フォルダ以外のファイルフォルダを削除するバッチファイル

    こんにちは。 質問タイトルと同じですが、 Windowsのバッチファイルにおいて 指定フォルダ以外のファイルフォルダ(すべて)を削除するバッチを作成したいのですが、できますでしょうか。ご教授願います。 例  A~Z のフォルダがある。  【要件】   B以外のフォルダをすべて削除する。 よろしくお願いいたします。

専門家に質問してみよう