MUNGE.exe (Resource Kit)

By | 2005-11-01

Find and Replace text within file(s) Notice that munge looks for a complete string (delimited with spaces) – it won’t match part of a string.

Syntax

MUNGE ScriptFile [options] FilesToMunge...

Key

ScriptFile : A text file containing the strings to Find & Replace

FilesToMunge : One or more files to be changed (may use wildcards)

Editing options

-q : Query only – don’t actually make changes.

-e : Query only – display entire line for each match

-o : Query only – just display filename once on first match

-k : Case – Case sensitive scriptFile

-r : Recurse into subfolders

-m : Collapse multiple carriage returns into one

-@ : Remove null characters

-n : Neuter – Surround all strings with TEXT()

-L : Literals – Dont process any quoted text (excludes comments)

-l : Literals – Dont process any quoted text (includes comments too)

Display options

-i : Just output summary of files changed at end

-c : If no munge of file, then check for cleanlyness

-v : Verbose – show files being scanned

Destination options

-t : Don’t create .bak files

-a : Use ATTRIB -r command for files that are readonly

-s : Use OUT command command for files that are readonly

(OUT is not a standard documented NT command!)

-f : Use -z flag for SLM OUT command

-u undoFileName : Generate an undo MUNGE script file for the changes made

-z : Truncate file after a Ctrl-Z character

Each line in the ScriptFile should take one of the following 3 forms:

oldName newName

“oldString” “newString”

-F .Ext Name. Name.Ext

In the script file -F may be used to restrict the files processed by MUNGE when FilesToMunge is a wildcard.

-F [Name].[Ext]

When FilesToMunge (on the command line) is a specific file then this filename will override any -F setting. When MUNGE is used with a wildcard to modify multiple files then you must specify -F in the scriptfile. MUNGE will create a backup file called .BAK, for this reason do not process files that have a .BAK extension unless you specify -t (dont create backup)

Example:

MUNGE myChanges.ini FileToMunge.txt

Where myChanges.ini contains the following

-F FileToMunge.txt
"Driver32=C:\WINNT\System32\odbc16.dll" "Driver32=C:\WINNT\System32\odbc32.dll"
"Driver32=C:\WINNT\System32\jct16.dll" "Driver32=C:\WINNT\System32\jct32.dll"

Notice that the whole string has to be spelled out even though only a small part is being changed. When changing a large or complex file this is considered a good thing. When writing a .ini script for munge watch out for trailing spaces.

In the onscreen feedback a TOKEN means your script may replace one word with another, while a LITERAL STRING means your script will replace one “Quoted String” with “Another Quoted string”

Munge script files can contain multiple string replacements – these will be applied in one pass only. In other words if you replace A with B and also replace B with C. Then A will not be changed into C (unless you run the MUNGE command twice.)

Bug:

Munge will not work reliably for files greater than 2 Mb – specifically if the string being searched for is not found in the first 2 MB of the file, then it won’t be found at all. If Munge is run twice in the same CMD shell against a large file then the second attempt will fail with errors. [NT 4.0 + sp 6 + Reskit]

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.