2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« そのExcelファイルが開かれているか?をVBAから調べる。 | トップページ | そのディレクトリ以下のすべてのファイルをそのディレクトリに移動する。 »

2008年4月 8日 (火)

DEL *.XLS は危険です!

拡張子3文字指定のワイルドカードは危険です!

例えば、Excelファイル群の中から .xls ファイルだけを消そうと、
del *.xls
すると、
*.xlsb
*.xlsm
*.xlsx
などもすべて消えます。わおーっ!

CMD.EXEのワイルドカードでは、*.xls が、実は *.xls でなく、*.xls* と同じです。

例えば、
dir /b *.xls

for %i in (*.xls) do @echo %i
は、
*.xls
だけでなく
*.xlsb
*.xlsm
*.xlsx
なども拾います。

なので、対策としては、2重に絞り込みます。
1段目は緩く *.* にして、2段目だけで絞り込んでも可。

dir /b *.xls|findstr /i "\.xls$"
for /f "delims=" %i in ('dir /b *.xls^|findstr /i "\.xls$"') do @echo %i
for %i in (*.xls) do @if /i %~xi==.xls echo %i

findstr は、正規表現なので、ワイルドカードとのシンタクスの違いに注意。
また、if で判定するときは、ケース無依存にすることに注意。

参考:Dirコマンド
http://technet2.microsoft.com/WindowsServer/ja/library/a6aaf662-4153-4f8c-873e-58d91aedc1ea1041.mspx

« そのExcelファイルが開かれているか?をVBAから調べる。 | トップページ | そのディレクトリ以下のすべてのファイルをそのディレクトリに移動する。 »