Global COTF Utility
Global COTF (Config-on-the-Fly) tool allows you to replace specific data in files or registry keys with any other custom data across the whole system.
For example, when migrating apps from old system to a new one, you may need to replace source machine identification information (hostname, IP address, etc.) with the destination machine ID information.
You are not limited to replacing hostnames. You can search for any text pattern and replace it with anything else. You can also specify a directory or registry path where to start searching for files containing the text pattern and whether to continue searching in sub-folders or not.
Usage
c:\globalcotf>globalcotf.exe /?
VirtaMove Global COTF Utility
Run COTF on a directory or registry key.
Usage, 2 options - Default and Custom:
GLOBALCOTF [/E] [/X] /D <path_search_in> <search_for> <replace_with>
GLOBALCOTF [/E] [/X] /C <COTF-file.xml> [arguments]
<path_search_in> The absolute directory or registry key path where to start looking for files with a keyword. Subdirectories are included.
<search_for> The keyword to look for in files and registry keys.
<replace_with> What to replace the keyword with.
<COTF-file> The absolute/relative path for the custom COTF config file.
arguments Optional arguments for the Config-on-the-fly settings file. Will replace $cotf0, $cotf1... placeholders in the file.
/E Optional: Enables encryption detection mode.
/X Optional: Enables detection of files with connection strings related to Databases and files containing JVM arguments.
Note: Don't forget to use quotes for arguments containing a space!
There are two ways of using this tool: Default (/D) and Custom (/C).
globalcotf.exe /D "C:\Program Files" old_host_name new_host_name
globalcotf.exe /C COTFconfigs\customCOTF.xml old_host_name
Default is an easy and fast way to replace some data with no extra configuration.
With Custom you can specify a config file that allows a high degree of customization over how exactly you want perform the COTF operation.
Here is an example of a COTF config file:
<?xml version="1.0" encoding="utf-8"?>
<VirtaMove feature="config-on-the-fly" version="3.0">
<TARGET folder="C:\" include_subfolders="yes" entries="*.txt">
<EXCLUDE>
<PATH>*\Windows*</PATH>
<PATH>*.sys</PATH>
</EXCLUDE>
<ACTION type="replace">
<SEARCH>192.168.47.74</SEARCH>
<REPLACE>192.154.56.1</REPLACE>
</ACTION>
<ACTION type="replace">
<SEARCH>Server2008R2-04</SEARCH>
<REPLACE>%COMPUTERNAME%</REPLACE>
</ACTION>
</TARGET>
<TARGET folder="HKEY_LOCAL_MACHINE\SOFTWARE" include_subfolders="yes" entries="*">
<EXCLUDE>
<PATH>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft*</PATH>
<PATH>HKEY_LOCAL_MACHINE\SOFTWARE\Classes*</PATH>
<PATH>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft*</PATH>
<PATH>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes*</PATH>
</EXCLUDE>
<ACTION type="replace">
<SEARCH>old_data</SEARCH>
<REPLACE>new_data</REPLACE>
</ACTION>
</TARGET>
</VirtaMove>
Nodes
The COTF file defines one or more TARGET
nodes:
TARGET
node - specifies the path(s) to be configuredEXCLUDE
node - defines paths or files that you want to exclude from theTARGET
node actionsACTION
node - specifies the action to be taken on the files found underTARGET
path(s)
The TARGET
node uses three attributes to define the paths and files that are to be configured:
folder
- path where to start searching for files/registry keysinclude_subfolders
- optional, default value is "no". If set to "yes", then search will continue in all subdirectories or subkeys of specifiedfolder
entries
- specifies what files or registry key value entries to scan for a text pattern. "*" means any file, "*.txt" means only filenames that end with ".txt"
The entries
attribute supports wildcard names, for example: "sql???.cfg", "HostInfo*", etc.
Each TARGET
node can have multiple ACTION
nodes. There are two types of ACTION
nodes:
For replace
, the action searches and replaces tokens (as defined in the SEARCH
and REPLACE
nodes). case_sensitive
is an optional attribute with a default value "no".
COTF search and replace follows the "POSIX-Extended Regular Expressions" rules.
The execute
type executes the executable defined in PATH
with the arguments defined in ARGUMENTS
for each entry matched in this TARGET
node. %%TARGET%%
placeholder can be used in ARGUMENTS
. It will be replaced with a matched entry/file.