ZetCode

Windows Command Prompt Text Processing

last modified July 14, 2025

Text processing in Command Prompt involves manipulating and analyzing text files and streams. Windows provides several built-in commands for these tasks. Understanding these tools enables efficient data processing without external programs. This tutorial covers essential text processing techniques in cmd.

Command Prompt text processing commands include find, findstr, sort, more, and type. These can be combined with redirection and pipes for powerful operations. Batch scripts often use these commands to parse logs, filter data, and transform text files. Mastering these tools is valuable for system admins.

Text processing in cmd follows the Unix philosophy of small, focused tools. Each command does one thing well and can be combined with others. While not as powerful as Unix tools, Windows commands handle most common text tasks. Understanding their capabilities and limitations is key to effective usage.

This tutorial demonstrates practical text processing examples. We'll cover searching, filtering, sorting, and transforming text data. The examples progress from basic to more advanced techniques. By the end, you'll be able to automate many text processing tasks in Windows.

Basic Definitions

Text Processing: Manipulating and analyzing text data through commands. Includes searching, filtering, sorting, and transforming text.

Redirection: Sending command output to a file (> for overwrite, >> for append) or reading input from a file (<). Essential for processing files.

Pipes (|): Connecting commands so output from one becomes input to another. Enables command chaining for complex operations.

Regular Expressions: Patterns for matching text strings. Findstr supports basic regex for powerful searches. Not as full-featured as Unix grep.

Batch Scripting: Automating command sequences in .bat or .cmd files. Combines text processing commands for repeatable tasks.

Searching Text with FIND

The FIND command searches for text strings in files or input. It's case-sensitive by default and returns lines containing the match. Basic syntax is simple but effective for many search tasks.

find_example.bat
@echo off
echo Creating sample file...
echo Line 1: Apples > fruits.txt
echo Line 2: Bananas >> fruits.txt
echo Line 3: cherries >> fruits.txt
echo Line 4: Dates >> fruits.txt

echo Searching for 'an'...
find "an" fruits.txt

This script creates a sample file then searches for lines containing 'an'. The find command looks for exact matches by default.

find "an" fruits.txt

Searches fruits.txt for the string 'an' and displays matching lines. The search is case-sensitive, so 'An' wouldn't match.

C:\>find_example.bat
Creating sample file...
Searching for 'an'...

---------- FRUITS.TXT
Line 2: Bananas
Line 3: cherries

Output shows lines containing 'an'. Note 'cherries' matches because 'an' is part of the word, not just a separate word.

Advanced Searching with FINDSTR

FINDSTR offers more powerful searching than FIND, including regular expressions. It supports case-insensitive searches, literal string searches, and pattern matching. Essential for complex text processing tasks.

findstr_example.bat
@echo off
echo Creating sample file...
echo Error: File not found > log.txt
echo Warning: Low disk space >> log.txt
echo Info: Process started >> log.txt
echo Error: Access denied >> log.txt

echo Finding errors case-insensitively...
findstr /i "^error" log.txt

echo Finding lines starting with E or W...
findstr /r "^[EW]" log.txt

This demonstrates FINDSTR's advanced capabilities. We search log entries using both literal strings and regular expressions.

findstr /i "^error" log.txt

Searches for lines starting with 'error' (/i makes it case-insensitive). The caret (^) anchors the match to the start of the line.

findstr /r "^[EW]" log.txt

Uses regex (/r) to find lines starting with E or W. Square brackets define a character class to match either letter.

C:\>findstr_example.bat
Creating sample file...
Finding errors case-insensitively...
Error: File not found
Error: Access denied
Finding lines starting with E or W...
Error: File not found
Warning: Low disk space
Error: Access denied

Output shows both search results. The first finds all error messages regardless of case, the second finds lines starting with E or W.

Sorting Text with SORT

The SORT command arranges text data in alphabetical or numerical order. It can sort files or piped input, and supports reversing order and removing duplicates. Useful for organizing data before further processing.

sort_example.bat
@echo off
echo Creating unsorted file...
echo Banana > items.txt
echo apple >> items.txt
echo Cherry >> items.txt
echo date >> items.txt

echo Default sort (case-sensitive):
sort items.txt

echo Case-insensitive sort:
sort /i items.txt

echo Reverse sort:
sort /r items.txt

This script demonstrates different sorting options. We create a file with mixed case items and show various sort results.

sort items.txt

Sorts items.txt alphabetically with case sensitivity (uppercase before lowercase). This is the default behavior.

sort /i items.txt

Performs case-insensitive sort (/i). Treats 'apple' and 'Apple' as equivalent for sorting purposes.

sort /r items.txt

Sorts in reverse order (/r). Works with both case-sensitive and insensitive sorts.

C:\>sort_example.bat
Creating unsorted file...
Default sort (case-sensitive):
Banana
Cherry
apple
date
Case-insensitive sort:
apple
Banana
Cherry
date
Reverse sort:
date
apple
Cherry
Banana

Output shows how sort order changes with different options. Note case-sensitive sort puts uppercase letters first.

Text Transformation with SET and Variable Substitution

Batch scripting can transform text using variable substitution features. The SET command supports string operations like substitution, extraction, and case modification. These are powerful for in-script text manipulation.

transform_example.bat
@echo off
set text=The quick brown fox

echo Original: %text%
echo Upper case: %text: =_%
echo Replace spaces: %text: =_%
echo Substring: %text:~4,5%
echo Upper case: %text:~0,1%%text:~1%

This example shows various text transformations using SET variable manipulation. We modify a sample string in different ways.

%text: =_%

Replaces all spaces with underscores. The syntax is %var:find=replace%. This performs global replacement in the variable's value.

%text:~4,5%

Extracts a substring starting at position 4 (0-based), 5 characters long. String slicing syntax is %var:~start,length%.

%text:~0,1%%text:~1%

Converts first character to uppercase (in this simple example). More complex case conversion requires additional commands.

C:\>transform_example.bat
Original: The quick brown fox
Upper case: The_quick_brown_fox
Replace spaces: The_quick_brown_fox
Substring: quick
Upper case: The quick brown fox

Output demonstrates each transformation. Note the simple "upper case" example doesn't actually change case in this basic form.

Combining Commands with Pipes

Pipes (|) connect commands, passing output from one to the next. This enables complex text processing by combining simple commands. Each command in the chain processes the data further.

pipes_example.bat
@echo off
echo Creating sample data...
echo 3. Orange > items.txt
echo 1. Apple >> items.txt
echo 4. Banana >> items.txt
echo 2. Cherry >> items.txt

echo Processing pipeline:
type items.txt | find "a" | sort /r

This script demonstrates a processing pipeline. We read a file, filter lines, and sort results - all in one command chain.

type items.txt | find "a" | sort /r

First reads items.txt, then finds lines containing 'a', finally sorts them in reverse order. Each pipe passes output to the next command.

C:\>pipes_example.bat
Creating sample data...
Processing pipeline:
4. Banana
3. Orange
2. Cherry

Output shows the final result after all processing steps. Only lines containing 'a' are shown, sorted in reverse alphabetical order.

Source

Windows Command Reference

This tutorial covered essential Command Prompt text processing techniques. Mastering these commands enables efficient text manipulation without external tools. Combine them creatively to solve complex text processing challenges.

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.