Tuesday, September 16, 2025

OIC - Create a large test file by exponential doubling using Windows batch or command

 Use case

You need a large text file quickly for testing integrations, stress-testing parsers, load tests, or demoing file-handling logic. The simplest approach on Windows is to start with a single line and repeatedly concatenate the file with itself — this doubles the line count each pass and reaches large sizes fast (exponential growth).


Explanation:

This batch script creates an output file with a single sample line and then doubles its size repeatedly by concatenating the file into a temporary file and back. Because every iteration multiplies the line count by two, you quickly reach tens or hundreds of thousands of lines with only a small number of iterations. The example below runs 17 doubling passes, producing 2^17 = 131,072 lines.


Code (copy-paste into a .bat file or .cmd file)

@echo off
setlocal EnableDelayedExpansion

:: Line content
set "line=This is the sample line"

:: Output file (adjust path if needed)
set "outfile=%USERPROFILE%\Desktop\output.txt"
if exist "%outfile%" del "%outfile%"

:: Start with 1 line
echo %line%>"%outfile%"

:: Double the file until it reaches ~100,000+ lines
for %%i in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17) do (
  type "%outfile%" >> "%outfile%.tmp"
  type "%outfile%.tmp" >> "%outfile%"
  del "%outfile%.tmp"
)

echo Done!
pause


Step-by-step solution / how it works

  1. Set up environment

    • @echo off hides command echoing.
    • setlocal EnableDelayedExpansion enables advanced variable handling (safe practice for scripts that modify variables in loops).
  2. Define the sample line

    • set "line=This is the sample line" — change the text inside quotes to whatever content you want repeated.
  3. Define and clear output file

    • set "outfile=%USERPROFILE%\Desktop\output.txt" places file on Desktop; change path as required.
    • if exist "%outfile%" del "%outfile%" removes any previous file with the same name.
  4. Seed file

    • echo %line%>"%outfile%" creates the file with a single line to start.
  5. Double the file repeatedly

    • The for %%i in (...) do (...) loop runs 17 times (you can change the number to control final size).
    • Inside loop:
      • type "%outfile%" >> "%outfile%.tmp" writes the current file content into a temp file (one copy).
      • type "%outfile%.tmp" >> "%outfile%" appends that temp file back to the original — now the original contains the old content plus the appended copy → doubled size.
      • del "%outfile%.tmp" removes the temp file.
  6. Finish

    • echo Done! informs completion and pause keeps the console open to view the message (press any key to exit).

How to choose number of iterations

  • Start with 1 line. Each iteration doubles the line count: after n iterations you have 2^n lines.
    • 10 iterations → 1,024 lines
    • 16 iterations → 65,536 lines
    • 17 iterations → 131,072 lines (the sample script)
  • If you want a specific line count, choose n = ceil(log2(desired_lines)).

Tips & cautions

  • Disk space & memory: big files can consume significant disk space and may be slow on slow disks. Use caution on low-storage systems.
  • Encoding: echo/type produce ANSI encoding by default. If you need UTF-8, consider using PowerShell (example below) or ensure callers handle ANSI.
  • Permissions: run in a location where you have write access (Desktop is safe for user-run scripts).
  • Performance: doubling is fast but each type reads and writes the whole file — for extremely large sizes, consider streaming approaches or generating lines programmatically.
  • Cleanup: remember to delete the generated file after tests.

No comments:

Post a Comment

Featured Post

OIC - OIC Utility to Reprocess Failed Real-Time Integration JSON Payloads

📌 Use Case In real-time OIC integrations, JSON payloads are exchanged with external systems via REST APIs. When such integrations fail (du...