Creating new file through Windows Powershell

Viewed 111045

I have googled for the below question, but could not find any answer. Can someone help me on this; What is the command to create a new file through Windows Powershell?

9 Answers

street smart (quick, dirty but works): (might change the file and add an invisible character which might cause the compiler to fail)

$null > file.txt
$null > file.html

Textbook method:

New-Item -path <path to the destination file> -type file

example:

New-Item -path "c:\" -type file -name "somefile.txt"

OR

ni file.xt -type file

absence of -path parameter means it creates it in the current working directory

ni filename.txt

Replace filename.txt with your file .

I found this the simplest answer to the question, and refer to other answers for more details.

Here is another way to create a blank text file in Powershell which allows you to specify the encoding.

First example

For a blank text file:

Out-File C:\filename.txt -encoding ascii

Without -encoding ascii, Powershell defaults to Unicode. You must specify ascii if you want it to be readable or editable by another source.

Overwriting the file with new text:

"Some Text on first line" | Out-File C:\filename1.txt -encoding ascii

This replaces whatever text is in filename.txt with Some Text on first line.

Appending text to the current file contents:

"Some More Text after the old text" | Out-File C:\filename1.txt -encoding ascii -Append

Specifying -Append leaves the current contents of filename.txt alone and adds Some More Text after the old text to the end of the file, leaving the current content intact.

As many have already pointed out, you can create files with the New-File command.
This command has a default alias set to ni but if you're used to unix commands you can create your own custom command easily.

Create a touch command to act as New-File like this:

Set-Alias -Name touch -Value New-Item

This new alias will allow you to create new files like so:

touch filename.txt

This would make these 3 commands equivalent:

New-Item filename.txt
ni filename.txt
touch filename.txt

Keep in mind that for this to be persistent, you should add the alias to your powershell profile. To get it's location simply run $profile on ps. If you want to edit it directly, run code $profile (for VSCode), vim $profile (for vim) or whatever.

                                                       # encodings:

New-Item file.js -ItemType File -Value "some content"  # UTF-8

"some content" | Out-File main.js -Encoding utf8       # UTF-8-BOM

echo "some content" > file.js                          # UCS-2 LE BOM

Another way to do it (method I like)

New-Item -ItemType file -Value 'This is just a test file' -Path C:\Users\Rick\Desktop\test.txt

Source: New-Item

Use the New-item cmdlet and your new file name.

New-item <filename>

Example:

New-item My_newFile.txt
Related