DEV Community

Jordan Holt
Jordan Holt

Posted on • Originally published at blog.jordanholt.dev on

Using the New-Item command

Besides basic navigation, creating files is a fundamental operation that you probably do regularly. Save some time and learn to use PowerShell to quickly create files and directories and speed up your workflow. In this post I’ll show you how you can use the New-Item cmdlet in Powershell to create files and directories.

This post assumes you have some basic knowledge of working with the command line, including opening PowerShell and understanding what directory you’re in. Make sure to check out my crash course PowerShell for Developers which covers the basics.In this article most of the commands are written long-hand for readability but there are short-hand versions for most of these commands and parameters.

Let’s start by having a quick look at the basics.

Creating files

If you wanted to create a new file in the current directory you could do the following.

New-Item -Path . -Name "testing.txt" -ItemType "file" -Confirm

First we invoke the New-Item cmdlet, then we enter a few different parameters:

  • The -Path parameter takes in a string, specifying a path for where the item will be created.In this case the dot character (’.’) which indicates that the path is the current directory.
  • Then we use the -Name parameter to indicate the filename.
  • The -ItemType parameter to indicate that it is a file that we want to create.
  • -Confirm will require you to confirm the command before it executes. This is a good idea because if there is already a file with the same name in the target location it will replace that file.

You don’t always need to explicitly indicate these parameters, some have default values. For instance, if we omit the -Pathparameter it will default to the current location.

We also don’t necessarily need to indicate that a parameter value type is a string by using double quotes (""), we can omit those in many circumstances. This code will do the same thing.

# these are the same
New-Item -Path . testing.txt -ItemType "file"
New-Item -Path . "testing.txt" -ItemType "file"

In the next example we omit the -Path parameter, which will default to the current location. The -Path also can take in the name of the file, so we take advantage of that and pass the name testing.txt into it. Since -Path has a position of 0 we can simply invoke the cmdlet and specify the name. which will make the command nice and short.

# passing the name into the -Path parameter
New-Item testing.txt 

New-Item also has the alias ni that you can use to further shorten your commands.

# these are the same
ni testing.txt
New-Item testing.txt

You can add data to the files you create using the -Value parameter.

For example you could add some text into a text file.

New-Item "another-example.txt" -Value "This text will be inside the file we are creating"

Here’s another example creating HTML:

New-Item "index.html" -Value "<html><body><h1>This is a heading</h1></body></html>"

Creating directories

You can easily create directories by adding using the -ItemType parameter and then indicating the type.

New-Item "styles" -ItemType "directory"

This will create a directory called styles in our current location.

If you wanted to create a directory in another location you can simply use the -Path parameter and specify the path where you want to create that directory.

New-Item -Path "c:\" -Name "todo-app" -ItemType "directory"

This will create a directory called todo-app at the root of the C: drive.

Creating multiple files

You can also create multiple files by passing in two strings separated by a comma.

New-Item -ItemType "file" "index.html", "styles.css"

Creating files in multiple directories

You can create files in multiple directories by using wildcardsin the -Path parameter.

For example, if you had a 3 directories in one location like this:

Get-ChildItem

    Directory: C:\Users\jordan\Projects\todo-app

Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2020-08-25 8:58 PM Dir-One
d---- 2020-08-25 8:58 PM Dir-Three
d---- 2020-08-25 8:58 PM Dir-Two

You could create a file in each one of those directories. In this example we’ll create a file called README.md in all three of those directories.Because we are using the * wildcard as the -Path value, the cmdlet will create a file in every directory in the current one.

New-Item -Path * -Name README.md -ItemType "file" -Value "## Thanks for Reading!"

Wrap up

Using New-Item can create a number of different item types, in this post we saw how we can create files and directories quickly in various locations. The New-Itemcmdlet is very useful for creating files repeatedly in multiple locations. In future posts I will show you how to combine this cmdlet into scripts that can be used as project boilerplate generators. Make sure to check out the PowerShell docs on New-Itemand my PowerShell for developers crash course for more information.

Discussion (0)