質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

3018閲覧

Windowsバッチファイル robocopyでカレントディレクトリの直下ファイルは無視してコピーしたい

hachi8888

総合スコア1

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/12/24 09:02

前提・実現したいこと

ファイルバックアップのWindowsバッチファイルを作成しています。
カレントディレクトリのひとつ上のフォルダ名のみ異なるディレクトリにサブフォルダを含めてファイルのコピーをしたいです。
ただし、直下ファイルはコピー対象外

(例)
カレントディレクトリ C:\Test\AAA\バッチ配置先
コピー先 C:\Test\BBB\バッチ配置先

発生している問題・エラーメッセージ

サブフォルダも含めてファイルのコピー自体はできたのですが、カレントディレクトリ直下にあるファイルもコピー対象に含まれてしまうので、こちらをコピー対象外にしたいです。

該当のソースコード

bat

1rem ユーザー名取得 2set user_name=%USERNAME% 3 4rem カレントディレクトリ フォルダ名取得 5set THIS_PATH=%~dp0 6for %%1 in ("%THIS_PATH:~0,-1%") do set FOLDER_NAME=%%~nx1 7 8 9REM バックアップ情報設定 10set "from_Dir=C:\Users\%user_name%\ドキュメント - コピー元\%FOLDER_NAME%" 11set "to_Dir=C:\Users\%user_name%\ドキュメント - コピー先\%FOLDER_NAME%" 12 13rem ファイルコピー 14robocopy "%from_dir%" "%to_Dir%" /S /R:0 /W:0 /NP /TEE /XJD /XJF

試したこと

robocopyコマンドの /xdオプションでカレントディレクトリを指定してみましたが、結果は同じでした。
ただし、フォルダパスの末尾にバックスラッシュなしの場合でしか指定出来ず、末尾にバックスラッシュありで指定しようとしてみましたが、コマンド実行時に弾かれてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

案1:全部コピーしてからコピー先の直下ファイルを削除
案2:コピー元のサブディレクトリを個別にコピーする
案3:コピー元直下のファイル一覧を取得して、それを/XFで除外

案1:

CMD

1robocopy ~~~ 2del "%to_Dir%?*"

案2:

CMD

1pushd "%from_dir%" 2for /d %%A in (*) do robocopy "%from_dir%\%%A" "%to_Dir%\%%A" オプション 3popd

案3:

CMD

1setlocal enabledelayedexpansion 2~~~ 3set XFILES= 4for %%A in ("%from_dir%*") do set XFILES=!XFILES! "%%~dpnxA" 5robocopy "%from_dir%" "%to_Dir%" 他のオプション /XF %XFILES%

テストはしてないです。

投稿2021/12/24 09:27

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hachi8888

2021/12/24 09:39

早速のご回答ありがとうございます。 ネットワークサーバー上でのバッチ実行予定なので、不必要ファイルのコピーと削除の履歴が残ってしまうであろうことから、案1ではなく案2を採用させていただきました。 ご協力感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問