Windowsのポチポチ業務を爆速化するPowerShell、フォルダを作るスクリプトの作り方


Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。

前回の記事はこちらです。

Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
Windowsのポチポチ業務(マウスを使った業務)を爆速化できるPowerShell。スクリプトを実行するために必要な実行ポリシーの変更方法について解説します。

前回はスクリプトの実行を制御するために必要な実行ポリシーについてご説明しました。

これまでの連載でディレクトリ・開発環境(ISE)・実行ポリシーと基礎的な内容をしっかりと積み上げてきました。本記事からはこれらを踏まえて実用的なスクリプトを作っていきます。

しかし、いざスクリプトを作ってみよう!と思ってもif文・for文など構文を使ったプログラミングは難易度が高いですよね。

そこで今回はノンプログラマーの方でも簡単に実用的なスクリプトの作成できる方法をご紹介します!

コマンドレットでディレクトリ(=フォルダ)を作る方法をお伝えし、さらにエクセルの数式・オートフィル機能を利用してコマンドレットを大量生産する方法もお伝えします。

写真データなどを日付毎のディレクトリに保存することはよくあるのではないでしょうか。このような日付毎のディレクトリを一気に作成するスクリプトを作ってみましょう!

ディレクトリを作成する

ディレクトリを作成するにはNew-Itemというコマンドレットを使用します

New-Itemはディレクトリ、またはファイルを新たに作成するコマンドレットです。今回はディレクトリを作成したいのでItemTypeにDirectoryを指定します

New-Itemの構文は以下の通りです。

New-Item ディレクトリ名 -ItemType Directory

201810、201811、201812、と3つのディレクトリを作ってみたいと思います。

まずPowerShellの開発環境であるISEを起動します。ISEについてはこちらの記事をご参照ください。

Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
Windowsのポチポチ業務(マウスを使った業務)を爆速化できるPowerShell。統合開発環境のPowerShell ISEを使って、効率よくPowerShellの開発を進めましょう!ISEでスクリプトを作成・保存方法とスクリプトで何ができるのかについてお伝えします!

スクリプトウィンドウに以下のコマンドレットを入力します。

デスクトップにSampleというディレクトリを作成し、その中にファイル名を「makedeirectory.ps1」としてスクリプトを保存してください。

実行前に実行ポリシーを変更してくださいね!実行ポリシーについてはこちらの記事をご参照ください。

Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備
Windowsのポチポチ業務(マウスを使った業務)を爆速化できるPowerShell。スクリプトを実行するために必要な実行ポリシーの変更方法について解説します。

このまま実行すると…

カレントディレクトリである「C:\Users\terad」にディレクトリが作成されています。指定した場所にディレクトリを作成できるようSet-Locationコマンドレットを使いカレントディレクトリを変更しておきましょう

Set-Location <変更したいディレクトリのパス>

今回は先ほど作成したデスクトップ上のSampleというディレクトリを指定しましょう。

ディレクトリの移動方法についてはこちらの記事をご参照ください。

Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
Windowsのポチポチ業務(マウスを使った業務)を爆速化するCUI=PowerShell。CUIを使う上で重要なカレントディレクトリ、親ディレクトリ・サブディレクトリ、ルートディレクトリの考え方をしっかり理解して、自由自在にディレクトリを移動できるようになりましょう!

下記のようにスクリプトの1行目でカレントディレクトリを変更します。

保存して実行すると…

このように変更したカレントディレクトリ内に、ディレクトリを作成することができました。

エクセルの関数・数式でスクリプトを作成する

ここからはエクセルを使ってコマンドレットを大量生産する方法をお伝えします。

エクセルを起動し、2018/10/1~2018/10/31の日付をA列に入力します。エクセルのオートフィル機能を使えば連続した日付を一気に入力できます。

2018/10/1だけ入力し、セルの右下にマウスカーソルを合わせるとカーソルが「+」の形に変わります。その状態で左クリックを押しながら下にドラッグしてください

このように連続した日付が一気に入力されました。

次に日付の隣、B列に以下の数式を入力してください。TEXT関数で日付形式のデータを文字列に変換します。

=TEXT(A1,”mmdd”)

1行目のB1セルに数式を入力したらセルの右下にマウスカーソルを合わせ、ダブルクリックしてください。日付が入力されている行数分、数式が自動でコピーされます

最後にスクリプトを作成する数式をC列に入力しましょう。

=”New-Item “& B1 &” -ItemType Directory”

さきほどのB列同様、カーソルが「+」の状態でダブルクリックしてください。日付が入力されている行数分、一気に数式がコピーされます。

なお、この時点で日付を文字列に変換しておかないと

「New-Item 43374 -ItemType Directory」

のようにシリアル値という日付を数値で表した形に変換されてしまうため、前処理としてTEXT関数を使っています。

ISEにエクセルで作成したスクリプトを貼り付ける

C列で作成したコマンドレットをISEのスクリプトウィンドウに貼り付けましょう!

さきほど作成したカレントディレクトリを変更するSet-Location(1行目)は残しておき、ディレクトリを「C:\Users\terad\Desktop\sample\201810」に変更しましょう。

スクリプトを実行すると…

このように「201810」内に日付毎のディレクトリが作成できました!

まとめ&次回予告

いかがだったでしょうか。

New-Itemとうコマンドレットを使えば普段よく行うディレクトリ(=フォルダ)作成ができます

またエクセルの数式とオートフィル機能を使えばそのコマンドレットを大量生産することができます

ディレクトリを1つ1つマウスでコピーし名前を変更して…という作業に比べると格段に生産性が上がりますね!

次回以降はコマンドレットを複数並べて書くのではなく、繰り返し処理を使いスッキリとしたスクリプトを書いていきましょう。繰り返し処理に必要なパイプラインとForEach-Objectコマンドレットについて説明していきますよ。

最後までお読みいただきありがとうございました!

連載目次:Windowsのポチポチ業務を爆速化するPowerShell

Windowsのポチポチ業務(マウスを使った業務)を爆速化するために、PowerShellを使った効率化の方法をお伝えしています。
  1. Windowsのポチポチ業務を爆速化するPowerShell、はじめのハードルぐーーんと下げてみます!
  2. Windowsのポチポチ業務を爆速化するPowerShell、キーボードを使わずササっと起動する方法
  3. Windowsのポチポチ操作を爆速化するPowerShellの絶対条件!ディレクトリとその移動をマスターしよう!
  4. Windowsのポチポチ業務を爆速化するPowerShell、コマンドレットを腹の底から理解する!
  5. Windowsのポチポチ業務を爆速化するPowerShell、オンラインヘルプでコマンドレットを使い倒す!
  6. Windowsのポチポチ業務を爆速化するPowerShell、統合開発環境ISEを紹介します!
  7. Windowsのポチポチ業務を爆速化するPowerShell、スクリプトを実行するための準備

  投稿者プロフィール

teradoshプログラミングする福祉職
システムエンジニアとして5年勤務した後、高齢者デイサービスで4年間働いた異色の経歴(学生時代は水泳コーチ)。1986年生まれ。大阪府豊中市在住。2女の父。

プログラミングの経験を活かし、福祉現場の業務効率化に情熱を燃やしています!

お気軽にフォローしてくださいね。

コメント