Batch File Tips and Tricks – Getting Substrings

By Daniel Jolly

This is an article I wrote a long time ago. It was the most popular on my old website, so I thought I had better move it across to here just in case people still needed it.

I learnt this trick on a project where I needed to trim some text off the end of a variable in a Windows batch file. Most solutions I found involved a third party program using the string as an argument or piping the string into a text file. I found this; One of the simplest and most useful “unknown” batch file tricks that I think I’ve used in every batch file since.

How to get a substring of a variable in a Windows batch file.

To express a variable in a batch file you start and end the variable with % signs.

%variable%

To trim a variable, you add :~p,n to the end of the name part of the variable.

%variable:~p,n%

where p is the starting position and n is the character length of the variable section you would like to store. If you use a negative for p, the position will count from the right side of the variable.

Examples:
To get the current year:

%date% = Thu 01/06/2023
%date:~10,4% = 2023

It could also be formatted like this:
%date:~-4,4% = 2023

To get the last 3 characters of the computers name:
%computername% = SALES001
%computername:~-3,3% = 001

Leave a Reply