バッチファイルを使用してサブディレクトリから隠しファイルを検索して移動する

バッチファイルを使用してサブディレクトリから隠しファイルを検索して移動する

このバッチ ファイルを使用してファイルを検索および移動しようとしていますが、隠しファイルでは機能しません。何が足りないのでしょうか?

@echo off
setlocal
set root=E:\backup
set dest=E:\Tmp
for /f "delims=" %%f in ('dir /ad /b /s %root%') do @move "%%f\~$*.SLD*" %dest%
endlocal

答え1

いずれにせよ、ファイルを非表示解除する必要があります。動く見つからないファイルには動作しません(完全なファイル名を指定しても)。動く隠し属性のタグが付けられたファイルを検索するようにします。

ファイルを非表示解除するには属性 -h. 次のfor行を次のセットに置き換えます:

for /f "delims=" %%f in ('dir /ad /b /s %root%') do (
  @attrib -h "%%f\~$*.SLD*"
  @move "%%f\~$*.SLD*" %dest%
)

もっと洗練されたツールを使うこともできます。xコピーまたはロボコピー、隠しファイルを操作できるツールです。もちろん、これらはコピー ツールなので、コピーが完了したら元のファイルを再表示して削除する必要があります。

関連情報