[前の記事]« バッチ内からのバッチ呼び出し中に「プロセスはファイルにアクセスできません」と出る
[次の記事]バッチファイル内でクリップボードから文字列を取り出す »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「COPY,XCOPY…ファイルやディスクの複写・連結・バックアップ」索引へ

指定したファイルが存在するサブディレクトリをまるごと移動したい

1618.
任意のディレクトリ名の条件取得
2007年01月20日(土) 23時48分
だい
ルートにあるディレクトリ一つ一つに対して、もしそのディレクトリ下のどこかに*.aaaがあるならば、そのディレクトリまるごと別の場所にコピーし、その後削除するようなバッチファイルを考えているのですが、どうもうまく考え付かないので、投稿しました。

--------状況---------
ルート: c:\root
ルートにあるディレクトリ名: 色々 
移す場所: d:\
---------------------
でよろしくお願いします。
1620.
Re:任意のディレクトリ名の条件取得
2007年01月21日(日) 13時40分
otn
>ルートにあるディレクトリ一つ一つに対して、もしそのディレクトリ下のどこかに*.aaaがあるならば、そのディレクトリまるごと別の場所にコピーし、その後削除するようなバッチファイルを考えているのですが、どうもうまく考え付かないので、投稿しました。
>
>--------状況---------
>ルート: c:\root
>ルートにあるディレクトリ名: 色々 
>移す場所: d:\
>---------------------
>でよろしくお願いします。

ちゃんとテストはしていませんが

cd C:\root
for /d %%A in (*) do (
  pushd %%A
  dir /s *.aaa >NUL 2>NUL
  popd
  if not ERRORLEVEL 1 (
    xcopy %%A d:\%%A /s その他のXCOPYオプション
    rd /s /q %%A
  )
)

1624.
Re:任意のディレクトリ名の条件取得
2007年01月23日(火) 05時05分
だい
>cd C:\root
>for /d %%A in (*) do (
>  pushd %%A
>  dir /s *.aaa >NUL 2>NUL
>  popd
>  if not ERRORLEVEL 1 (
>    xcopy %%A d:\%%A /s その他のXCOPYオプション
>    rd /s /q %%A
>  )
>)


無事動作しました。
forのdo文を複数行にまたがって記述できるのを知りませんでした。ショック。
ありがとうございましたー!
1625.
Re:任意のディレクトリ名の条件取得
2007年01月23日(火) 15時31分
otn
>forのdo文を複数行にまたがって記述できるのを知りませんでした。ショック。
>ありがとうございましたー!

ただ、複数行に書いても構文解析時には一行扱いで解釈されるので、書ける内容に制約があったりします。

for /f %%A in (...) do call :sub %%A
のように内部サブルーチンを呼び出すのが間違いが少ないです。 
 
 


カテゴリー「COPY,XCOPY…ファイルやディスクの複写・連結・バックアップ」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2007年01月20日 14:04に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチ内からのバッチ呼び出し中に「プロセスはファイルにアクセスできません」と出る」です。

次の投稿は「バッチファイル内でクリップボードから文字列を取り出す」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート