へほは日記

無感動な大人を卒業して、感動屋なおじさんになります。

【powershellのお話】ファイルやフォルダの削除

ワタクシ、一応SEなのだが、もうプログラムを作らなくなって久しい。

 

正確に書くと、プログラムを仕事で書いたことはないのかも。

ワタクシが作っていたのはshellというインタプリタ系言語。バッチみたいなものだな。

そのままコマンドラインで打っても動くものだ。

これはプログラムとは言わないのかも。ワタクシはプログラムの一種だと思っているが。

 

まぁあとは、仕事を楽するためにエクセルのマクロくらいは組む。

ただこれは仕事そのものではない。エクセルのマクロくらい、SEじゃなくても作れるでしょう。

 

仕事外でpythonを書いたことはある。

競馬の予想を回帰分析と使ってやってみようと思ったのだ。

・・・思ったはいいが、どの情報を回帰分析するのかが問題であって、それが分かれば予想で苦労することはないのだ。

・・・つまりはダメプログラムだった。まったく当たらなかった。

 

だいぶ話が逸れたが、、、

急にpowershellの話を始めたのは、SIerにシステム構築を委託しているのだが、そのSIerがしょうもないバグを量産していて、その中に思ってたのと違う動きだったんですっていう障害があったのだ。

 

すげー遅れているので、その申告は「分かったよ」ということで前に進めているのだが、SIerの適当な調査でねじ曲がったプログラムを書かれては、後々のメンテナビリティに影響するので、ちょっと調べていたのだ。

 

申告があったのは、特定のフォルダ、ファイルの削除について。より正確に書くと、特定のフォルダ、ファイル以外の削除。

 

言語はpowershellで、remove-itemを使うのだが、こういう感じになる。

(d:\logフォルダ配下のフォルダを中にあるファイルもろとも削除する。ただしtaihiという文言が付いているフォルダ、ファイルは除外する)

 

remove-item -path d:\log\* -exclude *taihi* -recurse

 

-pathは無くても良いのだが、今回はついていたのでそのまま。

-excludeは、除外対象を指定する。ワイルドカードを使えば複数指定可能。

-recurseは削除対象がフォルダだった場合、その配下のファイルも削除する。(何も聞いてこない)

 

結論としては、うまくいかなかった。

SIerの言い分は、-exclude が他のバージョン(OSのことだと思う)では動いていたが、この環境ではうまくいかない。

 

調べた限りでは、そのような-excludeに関する制限は見つかっていない。

代わりに見つかったのは、-recurseに関する不具合。

内容は不明だが、修正は1909以降。

ワタクシのところのバージョンはLTSC2019=1809なので、SACの環境でremove-itemを使っていた人がはまった可能性はある。

 

忙しいので、これ以上突っ込むのはやめた。

とりあえず、他のバージョンでは動いていたという申告がテキトウではなさそうと分かったのでちょっと安心した。