Windowsでフォルダーやファイルの操作を行う(新規作成、コピー、移動、削除、名前の変更など)場合、マウス操作で行うことが多いですが、操作対象のフォルダーやファイルの数が多い場合は、コマンドで操作することで、効率よく作業を行うことができます。
そこでここでは、Windowsでフォルダーやファイルの操作をWindowsコマンドやPowerShellで行う方法を紹介します。
なお、コマンドの詳しい使い方を知りたい方のために、それぞれのコマンドのMicrosoft公式リファレンスページへのリンクも記載しています。
目次
フォルダーやファイルの一覧を取得する
Windowsコマンドの場合
Windowsコマンドでフォルダーやファイルの一覧を取得するときは、dirコマンドを使用します。
dirコマンドの使用例は、次のとおりです。
カレントディレクトリ以下を再帰的に表示する:
> dir /s
カレントディレクトリ以下の拡張子が「.txt」のファイルのみを表示する:
> dir *.txt /s
PowerShellの場合
PowerShellでフォルダーやファイルの一覧を取得するときは、Get-Childitemコマンドレットを使用します。
Get-Childitemコマンドレットの使用例は、次のとおりです。
カレントディレクトリ以下を再帰的に表示する:
PS> Get-Childitem -Recurse
カレントディレクトリ以下の拡張子が「.txt」のファイルのみを表示する:
PS> Get-Childitem *.txt -Recurse
Get-ChildItem - PowerShell | Microsoft Learn
カレントディレクトリを移動する
WindowsコマンドやPowerShellでカレントディレクトリを移動するときは、CDコマンドやSet-Locationコマンドレットを使用します。
詳しい使い方は、以下の記事をご覧ください。
ファイルの内容を表示する
Windowsコマンドの場合
Windowsコマンドでテキスト形式ファイルの内容を表示するときは、typeやmoreコマンドを使用できますが、typeコマンドは1画面ごとにスクロールすることができないので、通常はmoreコマンドを使用った方法がおすすめです。
moreコマンドの使用例は、次のとおりです。
file1.txtファイルの内容を表示する:
>more file1.txt
また、moreコマンドはコマンドの出力を1ページずつ表示したいときにも利用できます。たとえば、dirコマンドの出力を1ページずつ表示するときは、次のように実行します。
> dir /s /b c:\ | more
なお、moreコマンドでは、スペースキーを押せば次のページにスクロールし、エンターキーを押せば1行ずつスクロールでき、表示を終了するときは「Q」キーを押すか「Ctrl+C」キーを押します。
PowerShellの場合
PowerShellでテキスト形式ファイルの内容を表示するときは、Get-Contentコマンドレットを使用します。
Get-Contentコマンドレットの使用例は、次のとおりです。
file1.txtファイルの内容を表示する:
PS> Get-Content file1.txt
Get-Content - PowerShell | Microsoft Learn
フォルダーやファイルをコピーする
Windowsコマンドの場合
Windowsコマンドでフォルダーやファイルをコピーするときは、copyやxcopy、robocopyコマンドが使用できますが、通常は同期や再試行、ログ機能なども備えたrobocopyコマンドを使った方法がおすすめです。
robocopyコマンドでフォルダーやファイルをコピーするときの実行例は、次のとおりです。
F:¥folder1フォルダーのsample.txtをF:¥folder2フォルダーにコピーする:
> robocopy F:¥folder1 F:¥folder2 sample.txt
F:¥folder1フォルダーを丸ごとF:¥folder2フォルダーにコピーする:
> robocopy F:¥folder1 F:¥folder2 /e
なお、robocopyコマンドではファイルの名前を変えてコピーすることができないので、そのようなときはcopyコマンドを使用します。たとえば、smaple.txtファイルをsample99.txtという名前に変更してコピーするときは、以下のようにコマンドを実行します。
> copy sample1.txt smaple99.txt
PowerShellの場合
PowerShellででフォルダーやファイルをコピーするときは、Copy-Itemコマンドレットを使用します。
robocopyコマンドでフォルダーやファイルをコピーするときの実行例は、次のとおりです。
F:¥folder1フォルダーのsample.txtをF:¥folder2フォルダーにコピーする:
PS> Get-ChildItem F:¥folder1\sample.txt -File | Copy-Item -Destination F:¥folder2\
F:¥folder1フォルダーを丸ごとF:¥folder2フォルダーにコピーする:
PS> Copy-Item F:¥folder1 F:¥folder2 -Recurse
Copy-Item - PowerShell | Microsoft Learn
フォルダーやファイルを移動する
Windowsコマンドの場合
Windowsコマンドでフォルダーやファイルを移動するときは、moveやrobocopyコマンドが使用できますが、moveコマンドはドライブをまたいだ移動ができないので、通常はrobocopyコマンドを使った方法がおすすめです。
robocopyコマンドでフォルダーやファイルを移動するときの実行例は、次のとおりです。
F:¥folder1フォルダーのsample.txtをF:¥folder2フォルダーに移動する:
> robocopy F:¥folder1 F:¥folder2 sample.txt /mov
F:¥folder1フォルダー内のすべてのフォルダーとファイルをF:¥folder2フォルダーに移動する:
> robocopy F:¥folder1 F:¥folder2 /s /move /e
PowerShellの場合
PowerShellでフォルダーやファイルを移動するときは、Move-Itemコマンドレットを利用します。
Move-Itemコマンドレットでフォルダーやファイルを移動するときの実行例は、次のとおりです。
F:¥folder1フォルダーのsample.txtをF:¥folder2フォルダーに移動する:
PS> Get-ChildItem F:¥folder1\sample.txt -File | Move-Item -Destination F:¥folder2
F:¥folder1フォルダー内のすべてのフォルダーとファイルをF:¥folder2フォルダーに移動する:
PS> Move-Item F:¥folder1 F:¥folder2
Move-Item - PowerShell | Microsoft Learn
フォルダーやファイルを削除する
Windowsコマンドの場合
Windowsコマンドでフォルダーを削除するときはrd(rmdir)コマンドを使用し、ファイルを削除するときはdelコマンドを使用します。
rdコマンドの使用例は、次のとおりです。
F:¥folder1フォルダーを中身ごと削除する:
> rd /s F:¥folder1
delコマンドの使用例は、次のとおりです。
F:¥folder1\file1.txtファイルを削除する:
> del F:¥folder1\file1.txt
F:¥folder1フォルダー内のすべてのファイルを削除する:
> del F:¥folder1
なお、delコマンドやrdコマンドでファイルやフォルダーを削除すると、ごみ箱には移動されずに消去されるのでご注意ください。
PowerShell
PowerShellでフォルダーやファイルを削除するときは、Remove-Itemコマンドレットを使用します。
Remove-Itemコマンドレットの使用例は、次のとおりです。
F:¥folder1フォルダーを中身ごと削除する:
PS> Remove-Item F:\folder1 -Recurse
F:¥folder1\file1.txtファイルを削除する:
PS> Get-ChildItem F:¥folder1\file1.txt -File | Remove-Item
F:¥folder1フォルダー内のすべてのファイルを削除する:
> Get-ChildItem F:\folder1 -File | Remove-Item
Remove-Item - PowerShell | Microsoft Learn
フォルダーやファイルの名前を変更する
Windowsコマンドの場合
Windowsコマンドでフォルダーやファイルの名前を変更するときは、renやmoveコマンドが使用できますが、renコマンドは使いづらいため、moveコマンドを使った方法がおすすめです。
moveコマンドでフォルダーやファイルの名前を変更するときの実行例は、次のとおりです。
file1.txtファイルの名前をfile99.txtに変更する:
> move file1.txt file99.txt
folder1フォルダーの名前をfolder77に変更する:
> move folder1 folder77
PowerShell
PowerShellでフォルダーやファイルの名前を変更するときは、Rename-Itemコマンドレットを使用します。
Rename-Itemコマンドレットでフォルダーやファイルの名前を変更するときの実行例は、次のとおりです。
file1.txtファイルの名前をfile99.txtに変更する:
PS> Rename-Item file1.txt file99.txt
folder1フォルダーの名前をfolder77に変更する:
PS> Rename-Item folder1 folder77
Rename-Item - PowerShell | Microsoft Learn
フォルダーを新規作成する
Windowsコマンドの場合
Windowsコマンドで新しいフォルダーを作成するときは、md(mkdir)コマンドを使用します。
mdコマンドの使用例は、次のとおりです。
folder1というフォルダーを作成する:
> md folder1
また、フォルダーの階層を指定すれば、途中の階層のフォルダーを一気にに作成することができます。たとえば、以下のように実行すると途中の階層である「aa」「bb」「cc」「dd」フォルダーを一気に作成できます。
> md d:\aa\bb\cc\dd\ee
PowerShell
PowerShellでフォルダーを作成するときは、New-Itemコマンドレットを使用します。
New-Itemコマンドレットの使用例は、次のとおりです。
folder1というフォルダーを作成する:
PS> New-Item folder1 -type directory
なお、New-Itemコマンドレットもmkdirコマンドと同じように、フォルダーの階層を指定すれば、途中の階層のフォルダーを一気に作成できます。
New-Item - PowerShell | Microsoft Learn
テキストファイルを結合(連結)する
Windowsコマンドの場合
Windowsコマンドでテキストファイルを結合(連結)するときは、copyコマンドを使った方法や、typeコマンドとリダイレクトを組み合わせた方法が使用できます。
copyコマンドでファイルを結合する実行例は、次のとおりです。
file1、file2、file3を結合してnewfileというファイルを作成する:
> copy /b file1.txt+file2.txt+file3.txt newfile.txt
カレントフォルダーのテキストファイルをすべて結合する:(結合順はファイル名順となります)
> copy /b *.txt newfile.txt
typeコマンドとリダイレクトを組み合わせてファイルを結合するときは、次のように実行します。
> type file1.txt file2.txt file3.txt >newfile.txt
PowerShell
PowerShellでテキストファイルを結合(連結)するときは、Get-ContentコマンドレットとSet-Contentコマンドレットを組み合わせた方法が使用できます。
file1、file2、file3を結合してnewfileというファイルを作成する:
PS> Get-Content file1.txt, filee2.txt, file3.txt | Set-Content newfile.txt
カレントフォルダーのテキストファイルをすべて結合する:(結合順はファイル名順となります)
PS> Get-Content *.txt | Set-Content newfile.txt
Set-Content - PowerShell | Microsoft Learn
文字列を検索する
Windowsコマンドの場合
Windowsコマンドでテキストやテキストファイルから文字列を検索するときは、findやfindstrコマンドが使用でき、正規表現を使った検索もできるfindstrコマンドがおすすめです。
fidstrコマンドで文字列を検索する実行例は、次のとおりです。
file1.txtかから「aaa」という文字列を検索する:
> findstr "aaa" file1.txt
file1.txtかから「aaa」という文字列で始まる行を正規表現を使って検索する:
> findstr /r /c "^aaa" file1.txt
PowerShell
PowerShellでテキストやテキストファイルから文字列を検索するときは、Select-Stringコマンドレットを使用します。
Select-Stringコマンドレット文字列を検索する実行例は、次のとおりです。
file1.txtかから「aaa」という文字列を検索する:
> Select-String file1.txt -Pattern 'aaa' -Encoding oem
なお、Select-Stringコマンドレットの「-Pattern」オプションには正規表現も指定できます。
Select-String - PowerShell | Microsoft Learn
あとがき
コマンドを使ったフォルダーやファイルの操作は、多数のフォルダーやファイルを一括で操作したいときに効果を発揮します。
ご活用あれ。