<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4275131957855627760</id><updated>2012-01-31T07:31:18.930+01:00</updated><category term='ruby'/><category term='subquery'/><category term='tools'/><category term='simulator'/><category term='javascript'/><category term='rocker'/><category term='loan'/><category term='regedit'/><category term='convertor'/><category term='registry'/><category term='development'/><category term='beanshell'/><category term='babylon'/><category term='tweaks tricks scripts encryption portable'/><category term='explorer'/><category term='cobol'/><category term='woonkrediet'/><category term='service'/><category term='association'/><category term='ip'/><category term='criteria'/><category term='firefox'/><category term='portable'/><category term='tail'/><category term='mouse'/><category term='vlaanderen'/><category term='excel'/><category term='plugin'/><category term='shell'/><category term='expenses'/><category term='rails'/><category term='grep'/><category term='monitor'/><category term='script'/><category term='bat'/><category term='vbs'/><category term='windows'/><category term='macro'/><category term='unicode'/><category term='hypotheek'/><category term='hardware'/><category term='utility'/><category term='backup'/><category term='linux'/><category term='apache'/><category term='belgium'/><category term='xml'/><category term='hibernate'/><category term='navigation'/><category term='tricks'/><category term='ant'/><category term='office'/><category term='research'/><category term='windowsmobile'/><category term='mysql'/><category term='java'/><category term='translation'/><category term='php'/><category term='usb'/><category term='wifi'/><category term='WPA'/><category term='security'/><category term='theme'/><category term='example'/><category term='tutorial'/><category term='contacts'/><category term='autohotkey'/><category term='ribbon'/><category term='regular expression'/><category term='join'/><category term='freeware'/><category term='game'/><category term='jmeter'/><category term='batch'/><category term='VBA'/><category term='regex'/><category term='outlook'/><category term='WEP'/><category term='sql'/><category term='jpa'/><category term='software'/><category term='color'/><category term='log'/><category term='fix'/><category term='redmine'/><category term='tweaks'/><category term='svn'/><category term='calculator'/><title type='text'>   myTselection</title><subtitle type='html'>        My selections on new Technology, new software, scripts, etc. or just some stuff I&amp;#39;m busy with.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-4217061551735424534</id><published>2011-08-22T16:14:00.002+02:00</published><updated>2011-08-22T16:15:33.196+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bat'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Batch parameter modifier</title><content type='html'>In batch script, one can use the &lt;a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true"&gt;following modifier&lt;/a&gt; to expand to full path etc.&lt;br /&gt;&lt;br /&gt;%~1 Expands %1 and removes any surrounding quotation marks ("").&lt;br /&gt;%~f1 Expands %1 to a fully qualified path name.&lt;br /&gt;%~d1 Expands %1 to a drive letter.&lt;br /&gt;%~p1 Expands %1 to a path.&lt;br /&gt;%~n1 Expands %1 to a file name.&lt;br /&gt;%~x1 Expands %1 to a file extension.&lt;br /&gt;%~s1 Expanded path contains short names only.&lt;br /&gt;%~a1 Expands %1 to file attributes.&lt;br /&gt;%~t1 Expands %1 to date and time of file.&lt;br /&gt;%~z1 Expands %1 to size of file.&lt;br /&gt;%~$PATH:1 Searches the directories listed in the PATH environment variable and expands %1 to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found, this modifier expands to the empty string.&lt;br /&gt;%~dp1 Expands %1 to a drive letter and path.&lt;br /&gt;%~nx1 Expands %1 to a file name and extension.&lt;br /&gt;%~dp$PATH:1 Searches the directories listed in the PATH environment variable for %1 and expands to the drive letter and path of the first one found.&lt;br /&gt;%~ftza1 Expands %1 to a dir-like output line.&lt;br /&gt;&lt;br /&gt;In the previous examples, you can replace %1 and PATH with other batch parameter values.&lt;br /&gt;&lt;br /&gt;The %* modifier is a unique modifier that represents all arguments passed in a batch file. You cannot use this modifier in combination with the %~ modifier. The %~ syntax must be terminated by a valid argument value.&lt;br /&gt;&lt;br /&gt;You cannot manipulate batch parameters in the same manner that you can manipulate environment variables. You cannot search and replace values or examine substrings. However, you can assign the parameter to an environment variable, and then manipulate the environment variable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-4217061551735424534?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/4217061551735424534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2011/08/batch-parameter-modifier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4217061551735424534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4217061551735424534'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2011/08/batch-parameter-modifier.html' title='Batch parameter modifier'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-4777901288625139627</id><published>2011-01-21T11:06:00.009+01:00</published><updated>2011-01-23T13:30:52.239+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='windowsmobile'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><category scheme='http://www.blogger.com/atom/ns#' term='explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Salling Clicker - Windows Mobile</title><content type='html'>&lt;p&gt;&lt;a href="http://www.google.be/search?q=salling%20clicker%203.5.0.860" target="_blank"&gt;Salling Clicker&lt;/a&gt; is a remote control software. It lets you control popular &lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" border="0" align="right" src="http://www.comp.nus.edu.sg/~marianmi/res/sallingclicker.png" /&gt;applications from a mobile phone or handheld computer through a user interface similar to a portable media player.     &lt;br /&gt;You can choose to have the computer take action when you make or receive a phone call or get close to your pc. For instance, Salling Clicker can automatically mute the system volume while you're on the phone or automatically lock the pc while your gone. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Control PowerPoint, iTunes, Windows Media Player, and more with your mobile device. &lt;/li&gt;    &lt;li&gt;Works with all major Bluetooth stacks (no configuration required). &lt;/li&gt;    &lt;li&gt;Amazingly easy-to-use WiFi connectivity for long-range control. &lt;/li&gt;    &lt;li&gt;Works with over 300 devices. &lt;/li&gt;    &lt;li&gt;Easily extend support for other applications using JavaScript or VBScript &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Scripts&lt;/h3&gt; Salling Clicker is installed with a set of default scripts (JavaScript for Windows) to support many different applications (PowerPoint, iTunes, MediaPlayer, etc.). On the &lt;a href="http://www.salling.com/forums/viewforum.php?f=13" target="_blank"&gt;forums of Salling Clicker&lt;/a&gt; many other custom scripts can be found, created and shared by the community.   &lt;br /&gt;I've created a set of personal scripts, some are base on the official scripts, some are based on the scripts found in the forums and some are completely new. I just list all the scripts I use:   &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/DeSlimsteMensSC.zip"&gt;De Slimste Mens&lt;/a&gt;: as explain in this &lt;a href="http://mytselection.blogspot.com/2010/12/de-slimste-mens-ter-wereld.html" target="_blank"&gt;separate blog post&lt;/a&gt;, I've created a complete interface to control the Flemish game &amp;quot;De Slimste Mens&amp;quot;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/myTMouseKeyboardSC.zip"&gt;myT Mouse Keyboard&lt;/a&gt;: full control for mouse and keyboard. Specially made for Windows Mobile devices with hardware keyboard (tested on Samsung Omnia B7310 and HTC Wizard (Qtek9100)). Use the screen to move mouse, use 'Menu' button to get context menu (mouse right click), use 'Help' button for extra options. To get a good overview of all options, I’ve put &lt;a href="http://www.dropbox.com/gallery/2328438/1/myTMouseKeyboard?h=5d1629" target="_blank"&gt;some screenshot online&lt;/a&gt;.       &lt;br /&gt;Use hardware keyboard to send all keys. The used keys will be displayed on the main screen for easy action tracking.       &lt;br /&gt;The extra option are:       &lt;ul&gt;       &lt;li&gt;switching of Shift/Ctrl/Alt/Win keys &lt;/li&gt;        &lt;li&gt;sending special characters &lt;/li&gt;        &lt;li&gt;sending function keys (eg F1-F12, pause, insert, delete, etc) &lt;/li&gt;        &lt;li&gt;sending media keys (play next song, webbrowser control, etc) &lt;/li&gt;        &lt;li&gt;sending long text: text input on device &lt;/li&gt;        &lt;li&gt;open a file on pc: navigate to folder and open a file, recent file history, easy access to favorite locations (eg start menu, 'my documents', etc) &lt;/li&gt;        &lt;li&gt;Zoom screen using freeware &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897434" target="_blank"&gt;ZoomIt&lt;/a&gt; application, all ZoomIt options supported (pen, break, etc) &lt;/li&gt;        &lt;li&gt;Show a screenshot of the pc on the main screen. &lt;/li&gt;        &lt;li&gt;Exchange data from pc clipboard to device and/or put text into the pc clipboard &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/PowerPointSC.zip"&gt;PowerPoint&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MediaPlayerSC.zip"&gt;MediaPlayer&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MediaPortalSC.zip"&gt;MediaPortal&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MediaCenterSC.zip"&gt;MediaCenter&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/iTunesSC.zip"&gt;iTunes&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/BSPlayerSC.zip"&gt;BSPlayer&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/VLCSC.zip"&gt;VLC&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/WinDVDSC.zip"&gt;WinDVD&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MSNSC.zip"&gt;MSN Online status&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/uTorrentSC.zip"&gt;uTorrent&lt;/a&gt;: from forum &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/ShutdownControlsSC.zip"&gt;ShutdownControls&lt;/a&gt;: shutodown/hibernate/standby/screen on-off/lock &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/DeviceInfoSC.zip"&gt;Device Info&lt;/a&gt;: distiribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/DisconnectSC.zip"&gt;Disconnect&lt;/a&gt;: distiribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/SystemVolumeSC.zip"&gt;System volume&lt;/a&gt;: control pc volume &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MuteWhileOnPhoneSC.zip"&gt;MuteWhileOnPhone&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/CallNotifierSC.zip"&gt;CallNotifier&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/LockComputerSC.zip"&gt;LockComputer&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/MonitorAwaySC.zip"&gt;MonitorAway&lt;/a&gt;: distribuated by Salling Clicker &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/ShowMessageSC.zip"&gt;Show Message&lt;/a&gt;: show message on pc &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-4777901288625139627?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/4777901288625139627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2011/01/salling-clicker-windows-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4777901288625139627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4777901288625139627'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2011/01/salling-clicker-windows-mobile.html' title='Salling Clicker - Windows Mobile'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-5414766108521691037</id><published>2011-01-17T15:13:00.030+01:00</published><updated>2011-01-18T10:43:52.619+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='belgium'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>Toshiba Tecra S11</title><content type='html'>&lt;p&gt;We recently replaced our old portable Lenovo ThinkPad T61 by the &lt;a href="http://eu.computers.toshiba-europe.com/innovation/generic/b2b-tecra-s11" target="_blank"&gt;Toshiba Tecra S11&lt;/a&gt;, Intel® Core™ i5 M520, 2,40GHz, 4GB Ram.&lt;br /&gt;Although this new one is certainly not the best device available, as can be read in this &lt;a href="http://www.notebookcheck.net/Review-Toshiba-Tecra-S11-11H-Notebook.29667.0.html" target="_blank"&gt;technical review&lt;/a&gt;, it has some nice new features like a finger print reader, SmartCard reader, webcam, DisplayPort and a larger HDD (320GB).&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Drivers&lt;/h2&gt;&lt;br /&gt;When we received the laptop, not all drivers were installed correctly. Additional drivers can be download and should be installed in the provided order:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/assist-20100128112828.zip"&gt;TOSHIBA Assist&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/tfmc-20100128115842.zip"&gt;TOSHIBA Extended Tiles for Windows Mobility Center&lt;/a&gt;, Windows Mobility Center can be opened in Windows 7 using the shortcut key Win+X&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/trustpm-20100128105712.zip"&gt;Infineon Trusted Platform Module Software&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/csutil-20110104161056.zip"&gt;Intel Chipset SW Installation Utility&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/heci-20100128111107.zip"&gt;Intel Management Engine Interface&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/amt-20100930140041.zip"&gt;Active Management Technology (AMT)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/display-20110104165919.zip"&gt;Display Driver&lt;/a&gt;, switch between displays in Windows 7 using the shortcut key Win+P&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/stormng-20100128111144.zip"&gt;Intel Storage Driver&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/vap-20110117130811.zip"&gt;TOSHIBA Value Added Package&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/sound-20100128112343.zip"&gt;Realtek Audio Driver&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/sound-20100128111919.zip"&gt;NVIDIA HD Audio Driver 1.0.2.0&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/lan-20100128110309.zip"&gt;LAN Driver Intel&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/lan-20100128112550.zip"&gt;LAN Realtek&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/tpdrv-20100128105614.zip"&gt;ALPS Pointing Device Driver Touch Pad&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/carc-20110104170258.zip"&gt;Ricoh Card Reader&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/smr-20100128112058.zip"&gt;O2Micro Smart Card Reader Driver 1.1.4.207G&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/mdm-20100128121922.zip"&gt;TOSHIBA Software Modem&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/mrsu-20100128121830.zip"&gt;TOSHIBA Software Modem Region Select Utility&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/wlesslan-20091112152016.html"&gt;Wireless LAN Driver&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/confree-20110104170335.zip"&gt;ConfigFree&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/ndidrst-20110104170748.zip"&gt;TOSHIBA Network Device ID Registry Setting Tool&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/r-util-20110104170453.zip"&gt;TOSHIBA 180 Degrees Rotation Utility&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/fp-sw-20101203101016.zip"&gt;TOSHIBA Fingerprint Utility&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/fareg-20100128120225.zip"&gt;TOSHIBA Face Recognition&lt;/a&gt; slows down Windows logon and not very effective&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tools/bluetooth/BT-stack.zip?Submit=Download"&gt;Bluetooth Stack for Windows by Toshiba&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/blt-mon-20100205112935.zip"&gt;Bluetooth Monitor&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/eco-20100526090803.zip"&gt;TOSHIBA eco Utility 1.1.12.64&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/hdsdal-20100325114839.zip"&gt;TOSHIBA HDD/SSD Alert 3.1.64.4&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/hddprot-20110104170615.zip"&gt;TOSHIBA HDD Protection 2.2.0.3&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/sest-20100128121757.zip"&gt;TOSHIBA Service Station V2.1.40&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/pchm-20100325114956.zip"&gt;TOSHIBA PC Health Monitor 1.5.1.64&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/pr-20100128112254.zip"&gt;PlayReady PC Runtime&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/usbsac-20100128122006.zip"&gt;TOSHIBA USB Sleep and Charge Utility 1.3.2.0&lt;/a&gt; allows charging (power) external devices over USB, even while the pc is in sleep or hibernate mode&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/webcam-20110104171019.zip"&gt;TOSHIBA Web Camera Application V1.1.2.6&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support.toshiba-tro.de/tools/eula/calleula.asp?ID=77851"&gt;BIOS Upgrade&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/reti-20110104170857.zip"&gt;ReelTime&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/IRST-20110104165517.zip"&gt;Rapid Storage Technology Driver&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/regpatch-20100128112150.zip"&gt;Registry Patch&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/secas-20110104170933.zip"&gt;Security Assist&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/sest-20100128121757.zip"&gt;Service Station&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://eu.computers.toshiba-europe.com/tempro/ToshibaW7TEMPRO.exe"&gt;TEMPRO&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/tbt-20110104165556.zip"&gt;Turbo Boost Technology&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://support1.toshiba-tro.de/tedd-files2/0/wlmng-20100118172548.html"&gt;Wireless Manager&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Toshiba official software download site: &lt;a href="http://eu.computers.toshiba-europe.com/innovation/download_drivers_bios.jsp?service=EU&amp;selCategory=2&amp;selFamily=5&amp;selSeries=149&amp;selProduct=1135&amp;selShortMod=965&amp;language=13&amp;selOS=29&amp;selType=all&amp;yearupload=&amp;monthupload=&amp;dayupload=&amp;useDate=null&amp;mode=allMachines&amp;search=&amp;action=search&amp;macId=&amp;country=all&amp;page=2&amp;nextCl=true&amp;startPage=1" target="_blank"&gt;http://aps2.toshiba-tro.de/&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Extras&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The build-in SmartCard reader can be used to read the &lt;a href="http://eid.belgium.be/nl/" target="_blank"&gt;Belgian eID cards&lt;/a&gt;, and thus also to login on the &lt;a href="http://www.taxonweb.be" target="_blank"&gt;Tax-On-Web pages&lt;/a&gt;. After installation of the SmartCard driver (see above) and a reboot, install &lt;a href="http://eid.belgium.be/nl/Hoe_installeer_je_de_eID/index.jsp" target="_blank"&gt;the eID software&lt;/a&gt; and reboot again.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://autosensitivity.codeplex.com/" target="_blank"&gt;AutoSensitivity&lt;/a&gt; allows you to define different mouse sensitivities (speeds) for your touchpad and mouse and automatically switch between them (based on mouse connect / disconnect). This can be useful since the touchpad on this Toshiba is rather slow.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://mytselection.blogspot.com/2009/02/my-windows-explorer-extentions.html" target="_blank"&gt;Windows Explorer extentions&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-5414766108521691037?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/5414766108521691037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2011/01/toshiba-tecra-s11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5414766108521691037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5414766108521691037'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2011/01/toshiba-tecra-s11.html' title='Toshiba Tecra S11'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-2774305027235000708</id><published>2010-12-01T22:15:00.018+01:00</published><updated>2011-01-18T15:21:56.223+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>De Slimste Mens Ter Wereld</title><content type='html'>&lt;h1&gt;(Nederlandse versie: zie onder)&lt;/h1&gt;  &lt;p&gt;&lt;a title="De Slimste Mens - Jonathan Huyghe" href="http://dekompagnie.be/" target="_blank"&gt;Jonathan Huyghe&lt;/a&gt; has made a &lt;a title="De Slimste Mens v3 - 4 spelers" href="http://dekompagnie.be/DSM3x4.zip" target="_blank"&gt;nice little flash tool&lt;/a&gt; to let you play the popular Flemish &lt;a title="De Slimste Mens Ter Wereld - één" href="http://www.een.be/programmas/de-slimste-mens-ter-wereld" target="_blank"&gt;TV show ‘De slimste mens ter wereld’ (The smartest person of the world)&lt;/a&gt; at home.&lt;/p&gt;  &lt;p&gt;Because I found it quite complicated to prepare the game, I made a little &lt;a title="Excel template &amp;#39;DSM-Voorbereiding.xlt&amp;#39;" href="http://dl.dropbox.com/u/2328438/DSM-Voorbereiding.xlt" target="_blank"&gt;Excel template&lt;/a&gt; that should make it more straightforward to make all preparations for it. It can easily generate the required ‘antwoorden.txt’ file with the correct syntax and it can print out cards with instructions to be used by the host during the game play.&lt;/p&gt;  &lt;br /&gt;&lt;h2&gt;User Manual&lt;/h2&gt;  &lt;ol&gt;   &lt;li&gt;Download this &lt;a title="DSM flash v3x4 + Excel template voorbereiding" href="http://dl.dropbox.com/u/2328438/DSM3x4.zip" target="_blank"&gt;package&lt;/a&gt; containing the original sources of Jonathan Huyghe + &lt;a title="DSM-Voorbereiding Excel template afzonderlijk" href="http://dl.dropbox.com/u/2328438/DSM-Voorbereiding.xlt" target="_blank"&gt;Excel template ‘DSM-Voorbereiding.xlt’&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Open the file ‘DSM-Voorbereiding’ with Excel and allow macros to run.&lt;a href="http://lh4.ggpht.com/_OiMAwW7QI68/TPbBjOpl4tI/AAAAAAAAEc8/YNN_b4d7GBw/s1600-h/EnableMacros%5B11%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="EnableMacros" border="0" alt="EnableMacros" src="http://lh3.ggpht.com/_OiMAwW7QI68/TPbBkM_I21I/AAAAAAAAEdA/WuN0rGWTLas/EnableMacros_thumb%5B5%5D.png?imgmax=800" width="519" height="337" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Fill in all grey marked fields (names of players, questions, answers). The other fields are protected so no mistakes can be made by accident.&lt;/li&gt;    &lt;li&gt;Some questions require .jpg images or .flv flash movies. The names and resolution of the files are put next to the questions. These files should be saved in the same folder next to the DSM .swf flash file manually.&lt;/li&gt;    &lt;li&gt;Save the Excel sheet, it is advised to save it in the same folder as the DSM .swf file&lt;/li&gt;&lt;li&gt;Click on the top button ‘Exporteer antwoorden.txt’ to generate (or overwrite) the ‘antwoorden.txt’ file (in the same folder as the Excel file) based on the data provided in the sheet. This file is required by the DSM .swf flash tool.&lt;/li&gt;    &lt;li&gt;Click on the top button ‘Print steekkaarten’ to get a print preview of the instruction cards that can be used by the game host. All instructions, questions and answers are clearly put together to print out and use during the play. The cards can be printed out 2 or &lt;a title="Example game cards printed 4 per page PDF" href="http://dl.dropbox.com/u/2328438/DSMSteekkaartenPer4.pdf" target="_blank"&gt;4 per page&lt;/a&gt; to make it easier to hold them during the game.&lt;/li&gt; &lt;/ol&gt;  &lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;h2&gt;Examples&lt;/h2&gt;&lt;br /&gt;I've made two quizzes using the Excel file with questions, images and movies:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/Quiz1.zip"&gt;Quiz1&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/Quiz2.zip"&gt;Quiz2&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Extra&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;If some changes are required to customize the layout etc, the sheets can be unprotected (no password is used) using the Excel menus.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To convert movie files the freeware tools &lt;a href="http://www.formatoz.com/" target="_blank"&gt;Format Factory&lt;/a&gt; and / or &lt;a href="http://www.rivavx.com/?encoder" target="_blank"&gt;Riva FLV encoder&lt;/a&gt; can be used.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To convert / edit the picture files, the freeware tool &lt;a href="http://www.getpaint.net/" target="_blank"&gt;Paint.NET&lt;/a&gt; can be used.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;While exporting the 'antwoorden.txt' file, another file 'DSMData.txt' will be created (since v2.0). This 'DSMData.txt' file can be imported on a Windows Mobile pocket pc to get a very user friendly interface to control the flash quiz on a pc. For this, it will be required to install &lt;a href="http://www.google.be/search?q=salling%20clicker%203.5.0.860"&gt;Salling Clicker&lt;/a&gt; on the PC and Windows Mobile device. Next this &lt;a href="http://dl.dropbox.com/u/2328438/DeSlimsteMens.zip"&gt;Salling Clicker 'De Slimste Mens' script&lt;/a&gt;  needs to be added in Salling Clicker. A new item will be available in Salling Clicker on the Windows Mobile device. I've put &lt;a href="http://www.dropbox.com/gallery/2328438/1/DeSlimsteMens?h=31a227" target="_blank"&gt;some screenshots online&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;(Dutch – Nederlands)&lt;/h1&gt;  &lt;p&gt;&lt;a title="De Slimste Mens - Jonathan Huyghe" href="http://dekompagnie.be/" target="_blank"&gt;Jonathan Huyghe&lt;/a&gt; heeft een &lt;a title="De Slimste Mens v3 - 4 spelers" href="http://dekompagnie.be/DSM3x4.zip" target="_blank"&gt;mooi flash programmaatje&lt;/a&gt; gemaakt om je thuis het populaire Vlaamse &lt;a title="De Slimste Mens Ter Wereld - één" href="http://www.een.be/programmas/de-slimste-mens-ter-wereld" target="_blank"&gt;TV spel ‘De slimste mens ter wereld’&lt;/a&gt; te laten spelen.&lt;/p&gt;  &lt;p&gt;Omdat ik het nogal omslachtig vond om het spel op te zetten, heb ik een Excel template gemaakt om alle voorbereidingen te vergemakkelijken en wat duidelijker te maken. Deze Excel laat toe om het bestand ‘antwoorden.txt’ te genereren met de juiste syntax. Ook kunnen steekkaarten afgeprint worden met alle instructies, vragen en antwoorden die nodig zijn tijdens het spelen van het spel.&lt;/p&gt;  &lt;br /&gt;&lt;h2&gt;Handleiding:&lt;/h2&gt;  &lt;ol&gt;   &lt;li&gt;Download dit &lt;a title="DSM flash v3x4 + Excel template voorbereiding" href="http://dl.dropbox.com/u/2328438/DSM3x4.zip" target="_blank"&gt;zip bestand&lt;/a&gt; met alle nodige bestanden van Jonathan Huyghe en de &lt;a title="Excel template ‘DSM-Voorbereiding.xlt’" href="http://dl.dropbox.com/u/2328438/DSM-Voorbereiding.xlt" target="_blank"&gt;Excel template ‘DSM-Voorbereiding.xlt’&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Open het bestand ‘DSM-Voorbereiding.xlt’ met Excel en sta het uitvoeren van macro’s toe.&lt;a href="http://lh3.ggpht.com/_OiMAwW7QI68/TPbBkvmWzNI/AAAAAAAAEdE/VP0qpeAa3Tk/s1600-h/EnableMacros%5B15%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="EnableMacros" border="0" alt="EnableMacros" src="http://lh4.ggpht.com/_OiMAwW7QI68/TPbBlcUQxJI/AAAAAAAAEdI/yG--AUVezxU/EnableMacros_thumb%5B7%5D.png?imgmax=800" width="505" height="323" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Vul al de grijze velden in (namen spelers, vragen, antwoorden). De andere velden zijn normaal beschermd zodat deze niet per ongeluk kunnen gewijzigd worden.&lt;/li&gt;    &lt;li&gt;Voor sommige vragen is het nodig om .jpg afbeeldingen en .flv flash filmpjes beschikbaar te maken. De namen en de resoluties die hiervoor moeten gebruikt worden, staan aangegeven naast de vragen. Deze bestanden moeten manueel in de zelfde map als het DSM .swf bestand geplaatst worden.&lt;/li&gt;    &lt;li&gt;Sla het Excel bestand op. Het is aangeraden om het bestand in dezelfde map als het DSM .swf bestand op te slaan.&lt;li&gt;Klik op de bovenste knop ‘Exporteer antwoorden.txt’ om het bestand ‘antwoorden.txt’ automatisch aan te maken (of te overschrijven). Dit bestand zal in dezelfde map als het Excel bestand geplaatst worden. Het bestand ‘antwoorden.txt’ is nodig voor de werking van het .swf programma DSM.&lt;/li&gt;    &lt;li&gt;Klik op de bovenste knop ‘Print steekkaarten’ om een print voorbeeld te krijgen van de steekkaarten. Deze steekkaarten kunnen tijdens het spel gebruikt worden en geven duidelijk de instructies, vragen en antwoorden aan. De steekkaarten kunnen per 2 of &lt;a title="Voorbeeld steekkaarten 4 per blad PDF" href="http://dl.dropbox.com/u/2328438/DSMSteekkaartenPer4.pdf" target="_blank"&gt;per 4 per blad&lt;/a&gt; afgedrukt worden om ze gemakkelijker vast te houden tijdens het spel.&lt;/li&gt; &lt;/ol&gt;  &lt;br /&gt;&lt;h2&gt;Voorbeelden&lt;/h2&gt;&lt;br /&gt;Zelf heb ik 2 quizzen gemaakt, met de Excel met vragen, afbeeldingen en filmpjes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/Quiz1.zip"&gt;Quiz1&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://dl.dropbox.com/u/2328438/Quiz2.zip"&gt;Quiz2&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Extra&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Als er wijzigen nodig zijn in de layout enz. kan het nodig zijn om de bescherming van de Excel tabbladen te verwijderen. Dit kan eenvoudig via de Excel menu’s (er is geen wachtwoord gebruikt in de beveiliging).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Voor het omzetten van de filmpjes kunnen de gratis applicaties &lt;a href="http://www.formatoz.com/" target="_blank"&gt;Format Factory&lt;/a&gt; en / of &lt;a href="http://www.rivavx.com/?encoder" target="_blank"&gt;Riva FLV encoder&lt;/a&gt; gebruikt worden.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Voor het omzetten / bewerken van afbeeldingen, kan de gratis applicatie &lt;a href="http://www.getpaint.net/" target="_blank"&gt;Paint.NET&lt;/a&gt; gebruikt worden.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bij het exporteren van het bestand 'antwoorden.txt', zal nu ook een bijkomend bestand 'DSMData.txt' aangemaakt worden. Dit bestand kan geïmporteerd worden op een Windows Mobile toestel om zo een zeer eenvoudige bediening van het volledige spel toe te laten. Hiervoor moet op de computer en de Windows Mobile PDA wel &lt;a href="http://www.google.be/search?q=salling%20clicker%203.5.0.860"&gt;Salling Clicker&lt;/a&gt; geïnstalleerd worden en vervolgens moet dit &lt;a href="http://dl.dropbox.com/u/2328438/DeSlimsteMens.zip"&gt;Salling Clicker 'De Slimste Mens' script&lt;/a&gt; toegevoegd worden. Een nieuw item zal beschikbaar zijn in Salling Clicker op het Windows Mobile toestel. &lt;a href="http://www.dropbox.com/gallery/2328438/1/DeSlimsteMens?h=31a227" target="_blank"&gt;Enkele schermafbeeldingen.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Update 2/12/2010 v1.4: Extra validation added for field lengths. Status bar message for export added. Added import functionality.&lt;br /&gt;&lt;br /&gt;Update 6/12/2010 v1.5: Added example quiz questions.&lt;br /&gt;&lt;br /&gt;Update 17/01/2011 v2.0: Added export for Salling Clicker&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-2774305027235000708?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/2774305027235000708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/12/de-slimste-mens-ter-wereld.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2774305027235000708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2774305027235000708'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/12/de-slimste-mens-ter-wereld.html' title='De Slimste Mens Ter Wereld'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_OiMAwW7QI68/TPbBkM_I21I/AAAAAAAAEdA/WuN0rGWTLas/s72-c/EnableMacros_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-2377582573922198457</id><published>2010-11-29T11:49:00.012+01:00</published><updated>2010-12-03T10:23:57.243+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='expenses'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><category scheme='http://www.blogger.com/atom/ns#' term='belgium'/><title type='text'>Personal expense sheet</title><content type='html'>&lt;p&gt;With the formula I presented in my previous &lt;a href="http://mytselection.blogspot.com/2010/11/excel-lookups-in-fomulas.html" target="_blank"&gt;blogpost on Excel look-ups&lt;/a&gt; I created an &lt;a href="http://dl.dropbox.com/u/2328438/RekeningOverzichtTemplate.xltm" target="_blank"&gt;Excel sheet to monitor my personal expenses&lt;/a&gt;. &lt;br /&gt;It is based on the data I extract from my different online banking systems (currently for the Belgian banks &lt;a href="http://www.argenta.be" target="_blank"&gt;Argenta&lt;/a&gt;, &lt;a href="http://www.landbouwkrediet.be" target="_blank"&gt;Landbouwkrediet&lt;/a&gt; and &lt;a href="http://www.kbc.be" target="_blank"&gt;KBC&lt;/a&gt;). &lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the 'Categories' sheet, different keywords linked to the category name need to be filled in, this could be the name of a company or the account number. The keyword will be looked up in the account and comment of each transaction. And this will make it possible to automatically categorize each bank transaction and automate some analysis/summary overview on the transactions.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Every now and then, I copy the data from the online banking system into the 'data' Excel sheets. All expenses are categorized automatically with my formula in the column 'Auto Type', but if some exceptional category needs to be assigned, a 'Manual Type' column can be set to override the 'Auto Type'. Based on these categories, I created some sheets with an summary overview for each month and some averages per month and per year. This way, I can get a clean overview on our expenses and incomes and keep a copy of our banking data offline as well (since many banks only keep last 2 years online).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Based on my personal sheet I created &lt;a href="http://dl.dropbox.com/u/2328438/RekeningOverzichtTemplate.xltm" target="_blank"&gt;this empty (dutch) template sheet&lt;/a&gt;, but it will still need some custom changes to be usable for someone else. But it could be a nice starting point. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-2377582573922198457?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/2377582573922198457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/11/personal-expense-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2377582573922198457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2377582573922198457'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/11/personal-expense-sheet.html' title='Personal expense sheet'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-8702560368437490258</id><published>2010-11-25T11:16:00.036+01:00</published><updated>2011-02-11T15:23:05.595+01:00</updated><title type='text'>GIT usage (for an SVN user)</title><content type='html'>I put together some stuff about git I found interesting.&lt;br /&gt;&lt;h2&gt;Installation&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;To get started with git on Windows, you'll probably want to download &lt;a href="http://code.google.com/p/tortoisegit/downloads/list" target="_blank" name="TortoiseGIT download"&gt;TortoiseGIT&lt;/a&gt; (and this requires &lt;a href="http://code.google.com/p/msysgit/" target="_blank" name="msysigt"&gt;msysgit&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Setup&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;To use git, a username and email need to be configured. This can be done in of TortoiseSVN -&gt; Settings -&gt; Git -&gt; Config.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Migration from SVN&lt;/h2&gt;&lt;br /&gt;A very good manual to migrate your existing SVN repository to GIT can be found in this &lt;a href="http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/" target="_blank" name="SVN to GIT migration manuel"&gt;blog post of Jon Maddox&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;&lt;a href="http://stackoverflow.com/questions/871/why-is-git-better-than-subversion" target="_blank"&gt;Good to know&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Git tracks content not files&lt;br /&gt;Many revision control systems provide an 'add' command that tells the system to start tracking changes to a new file. Git's 'add' command does something simpler and more powerful: git add is used both for new and newly modified files, and in both cases it takes a snapshot of the given files and stages that content in the index, ready for inclusion in the next commit.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Most SCM systems use Delta Storage systems - they store the differences between one commit and the next. Git does not do this - it stores a snapshot of what all the files in your project look like in this tree structure each time you commit. This is a very important concept to understand when using Git.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There is only one Git Directory per project (as opposed to one per subdirectory like with SVN or CVS), and that directory is (by default, though not necessarily) '.git' in the root of your project.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Git is much faster than SVN.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In SVN, each file &amp; folder can come from a different revision or branch. At first, it sounds nice to have this freedom. But what this actually means is that there is a million different ways for your local checkout to be completely screwed up.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You have to tell SVN whenever you move or delete something. Git will just figure it out.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Branches are cheap and easy to merge, so this is a good way to try something out.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A single git repository can maintain multiple branches of development. The 'master' branch is a default branch that was created for you automatically. The 'git checkout branchname' command will switch between branches. The command 'git merge branchname' will merge changes from another branch in the current active branch.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The 'pull' command performs two operations: it fetches changes from a remote branch, then merges them into the current branch.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;'git commit' commits locally, whereas 'git push origin master' pushes the master branch to the remote named 'origin').&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Git adds complexity. Two modes of creating repositories, checkout vs. clone, commit vs. push... You have to know which commands work locally and which work with "the server" (I'm assuming most people still like a central "master-repository").&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Git is MUCH better suited if some developers are not always connected to the master repository.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Even if you don't have commit rights for a project, you can still have your own repository online, and publish 'push requests' for your patches. Everybody who likes your patches can pull them into their project, including the official maintainers.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Drawbacks of Git:&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;it's much harder to learn, because Git has more concepts and more commands.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;many Git commands are cryptic, and error messages are very user-unfriendly&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;revisions don't have version numbers like in subversion&lt;/li&gt;&lt;li&gt;you have to have a full copy of the repository, you can't work on partials&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Git branching model&lt;/h2&gt;&lt;br /&gt;&lt;a href="http://nvie.com/posts/a-successful-git-branching-model/" target="_blank"&gt;A very good post on git branching model&lt;/a&gt;&lt;br /&gt;&lt;a href="http://github.com/downloads/nvie/gitflow/Git-branching-model.pdf" target="_blank"&gt;Pdf model overview&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Central repo with 'origin/master' and 'origin/development' branches (infinte lifetime)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;'origin/master' branch reflects the production release&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Supporting branches&lt;/li&gt;&lt;ul&gt;&lt;li&gt;feature branch: branches from development and merges into development, branch name different from master, develop, release-* or hotfix-*, exist in developers repos only, not in central origin&lt;/li&gt;&lt;li&gt;release branch: branches from development and merges into development and master, branch name release-*, all feature branches must be merged in development before release branch is branched off&lt;/li&gt;&lt;li&gt;hotfix branch: branches from development and merges into development, master and release, branch name hotfix-*&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Central Repo&lt;/h2&gt;&lt;br /&gt;If you like to setup a git central repository on Windows (for example to replace your &lt;a href="http://www.visualsvn.com/server/" target="_blank"&gt;VisualSVN&lt;/a&gt; environment), you can follow &lt;a href="http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP" target="_blank"&gt;this manual&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-8702560368437490258?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/8702560368437490258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/11/git-usage-scenario-for-svn-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8702560368437490258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8702560368437490258'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/11/git-usage-scenario-for-svn-user.html' title='GIT usage (for an SVN user)'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-961127393634929322</id><published>2010-11-24T17:08:00.002+01:00</published><updated>2010-11-25T08:16:51.714+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='portable'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><title type='text'>MoWes Portable + OS Commerce 2.2 / 3.0a</title><content type='html'>&lt;p&gt;&lt;a href="http://www.oscommerce.com/" target="_blank"&gt;&lt;img style="margin: 0px 0px 5px; display: inline; float: right" align="right" src="http://www.oscommerce.com/images/oscommerce.gif" /&gt;&lt;/a&gt;I wanted to play with &lt;a title="OS Commerce (open source online shop)" href="http://www.oscommerce.com/" target="_blank"&gt;OS Commerce&lt;/a&gt;. Since this is written in PHP I needed some portable PHP, Apache and MySQL package. &lt;a href="http://www.chsoftware.net/en/mowes/mowesportable/main.htm" target="_blank"&gt;MoWes Portable&lt;/a&gt; does exactly what I was looking for and they offer some very nice &lt;a title="MoWes mixer" href="http://www.chsoftware.net/en/mowes/mowesmixer/mowesmixer.htm" target="_blank"&gt;online MoWes Mixer&lt;/a&gt; so anyone can easily create it’s own portable package (choice in version, packages, etc.). I created my own package with OSCommerce v2.2, v3.0a and &lt;a title="phpMyAdmin online MySQL administration tool" href="http://www.phpmyadmin.net" target="_blank"&gt;phpMyAdmin&lt;/a&gt;. I added extra languages and applied some standard configuration/tweaks to make it immediately usable in Belgium.&lt;/p&gt;  &lt;p&gt;Full package download containing &lt;a title="MoWes Portable + OS Commerce 2.2 &amp;amp; 3.0a" href="http://dl.dropbox.com/u/2328438/instantredmine.zip" target="_blank"&gt;MoWes Portable 2, Apache2_SE, MySQL5_SE, PHP52, MediaWiki, OpenDB, OS_Commerce 2.2, OS_Commerce 3.0a, phpBB3 and PHPMyAdmin&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_OiMAwW7QI68/TO04buKlvAI/AAAAAAAAEcY/gZ8DeCDg4dQ/s1600-h/VirtueMart2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VirtueMart" border="0" alt="VirtueMart" align="right" src="http://lh4.ggpht.com/_OiMAwW7QI68/TO04czSX_tI/AAAAAAAAEcc/g8eDtAbjshg/VirtueMart_thumb.jpg?imgmax=800" width="244" height="134" /&gt;&lt;/a&gt;&lt;a href="http://virtuemart.net/" target="_blank" title="VirtueMart open source Joomla e-commerce solution"&gt;VirtueMart&lt;/a&gt; is a similar open source project, but build within &lt;a title="Joomla! open source CMS" href="http://www.joomla.org" target="_blank"&gt;Joomla!&lt;/a&gt;. For me they seem very similar in the provided functionality. Joomla and thus VirtueMart can be integrated within MoWes as well using the &lt;a title="MoWes Mixer" href="http://www.chsoftware.net/en/mowes/mowesmixer/mowesmixer.htm" target="_blank"&gt;MoWes mixer&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-961127393634929322?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/961127393634929322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/11/mowes-portable-os-commerce-22-30a.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/961127393634929322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/961127393634929322'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/11/mowes-portable-os-commerce-22-30a.html' title='MoWes Portable + OS Commerce 2.2 / 3.0a'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_OiMAwW7QI68/TO04czSX_tI/AAAAAAAAEcc/g8eDtAbjshg/s72-c/VirtueMart_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-7706886263050424797</id><published>2010-11-24T17:04:00.005+01:00</published><updated>2011-01-31T22:02:35.733+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='redmine'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='portable'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>InstantRails + Redmine</title><content type='html'>&lt;p&gt;I just discovered &lt;a href="http://www.redmine.org/" target="_blank"&gt;Redmine&lt;/a&gt;, and it looks quite promising to me as a project development tracking system. &lt;/p&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h2&gt;InstantRails&lt;/h2&gt;&lt;p&gt;Since I’m a big fan of portable applications, I tried to play with Redmine using InstantRails, but had some trouble getting it to run, since InstantRails uses some old versions of some required gems. So after upgrading gems to 1.3.7 and rack to 1.0.1 and finding some old version of the MySQL lib libmysql.dll v5.0 I got it all working nicely locally and portable. If anyone would like to play with it: &lt;a title="InstantRail + Redmine 2 portable package" href="http://dl.dropbox.com/u/2328438/instantredmine.zip" target="_blank"&gt;download InstantRails 2.0 + Redmine 1.1.1&lt;/a&gt; (42MB). I removed some parts of the gems documentation files to make it smaller. &lt;/p&gt;&lt;p&gt;The InstantRails package contains MySQL, Apache, Ruby and Rails. To use it, just run ‘InstantRails.exe’, the Apache and MySQL servers will automatically be launched.&lt;/p&gt;&lt;p align="center"&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/_OiMAwW7QI68/TO03OJTClTI/AAAAAAAAEag/w9Pomh_xVAg/s1600-h/InstantRails5.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="InstantRails" border="0" alt="InstantRails" src="http://lh4.ggpht.com/_OiMAwW7QI68/TO03OxlzK9I/AAAAAAAAEak/9pbyal_2lu8/InstantRails_thumb3.png?imgmax=800" width="449" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;During startup, InstantRails may request to regenerate the configuration because of a folder location change. Just press ‘Yes’. If Apache doesn’t start automatically, make sure the ‘&lt;font face="Courier New"&gt;apache\logs&lt;/font&gt;’ folder exists. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Next click on the ‘i’ button, in the menu chose ‘Rails Applications’ –&amp;gt; ‘Manage Rails Applications’, select ‘Redmine’ push the button ‘Start with Mongrel’. &lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh6.ggpht.com/_OiMAwW7QI68/TO03PQ4DGdI/AAAAAAAAEao/6af5G_mY0dY/s1600-h/ManageRailsApplications4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ManageRailsApplications" border="0" alt="ManageRailsApplications" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03QXVrnNI/AAAAAAAAEas/3d0MAHrbCDE/ManageRailsApplications_thumb2.png?imgmax=800" width="454" height="207" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OiMAwW7QI68/TO03Q2lWA6I/AAAAAAAAEaw/YGuDYS6fK_Y/s1600-h/StartMongrel4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="StartMongrel" border="0" alt="StartMongrel" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03RkIWWyI/AAAAAAAAEa0/6W5qbJcAZZM/StartMongrel_thumb2.png?imgmax=800" width="444" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A command window will open up and when it’s loaded you can navigate to &lt;a href="http://localhost:3003"&gt;http://localhost:3003&lt;/a&gt; and start using your own personal portable Redmine. (default login: admin, password: admin). To manage the database, phpMyAdmin is included as well, just navigate to &lt;a href="http://localhost/mysql"&gt;http://localhost/mysql&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;If you don’t care to have it portable, you could as well install Ruby on Rails and Redmine using this &lt;a href="http://www.richardnichols.net/2009/09/1-minute-guide-installing-redmine-on-windows/" target="_blank"&gt;1 minute guide&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Plugins&lt;/h2&gt;&lt;p&gt;Redmine 2 is included, but I added the following &lt;a title="Redmine Plugin information - installation - configuration" href="http://www.redmine.org/wiki/1/Plugins" target="_blank"&gt;plugins&lt;/a&gt; I found interesting as well:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Codereview Redmin Plugin" href="http://www.redmine.org/boards/3/topics/5878" target="_blank"&gt;Codereview&lt;/a&gt;: code review comments can be added in repository within Redmine. It has a project tab with an overview of the code review comments as well &lt;/li&gt;&lt;li&gt;&lt;a title="Hudson Redmin Plugin" href="http://www.redmine.org/boards/3/topics/14348" target="_blank"&gt;Hudson&lt;/a&gt;: project tab for Hudson administration &lt;/li&gt;&lt;li&gt;&lt;a title="Issue Due Date Redmin Plugin" href="http://www.redmine.org/wiki/1/PluginIssueDueDate" target="_blank"&gt;Issue due date&lt;/a&gt;: automatically set issue due date to the version due date &lt;/li&gt;&lt;li&gt;&lt;a title="Timesheet Redmin Plugin" href="http://www.redmine.org/wiki/1/PluginTimesheet" target="_blank"&gt;Timesheet&lt;/a&gt;: create a timesheet with overview of tracked timings &lt;/li&gt;&lt;li&gt;&lt;a title="Time Tracker Redmine Plugin" href="http://www.redmine.org/plugins/redmine_time_tracker" target="_blank"&gt;Time Tracker&lt;/a&gt;: easily track timings while working on issues &lt;/li&gt;&lt;li&gt;&lt;a title="Wiki Notes Redmin Plugin" href="https://github.com/dseifert/redmine_wiki_notes" target="_blank"&gt;Wiki notes&lt;/a&gt;: extra wiki options, example created &lt;/li&gt;&lt;li&gt;&lt;a title="Wiki Tabs Redmine Plugin" href="https://github.com/nbolton/redmine_wiki_tabs" target="_blank"&gt;Wiki tabs&lt;/a&gt;: possibility to add a project tab linked to wiki page, not configured yet &lt;/li&gt;&lt;li&gt;&lt;a title="Tab Redmine Plugin" href="https://github.com/jamtur01/redmine_tab" target="_blank"&gt;Tab&lt;/a&gt;: custom project tab configuration, configured to get the &lt;a title="Sonar code quality management" href="http://www.sonarsource.org/" target="_blank"&gt;Sonar&lt;/a&gt; project information page &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Demo&lt;/h2&gt;&lt;p&gt;Within Redmine I configured roles, issues states, permissions and a workflow. I set up different users, projects and issues to be able to play with different configuration settings. Each user is configured to use the same password as the username: admin, teamleader, developer, etc. (see administration console). It is very easy to configure which role can perform what tasks and see specific content within Redmine.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OiMAwW7QI68/TO03T5su_iI/AAAAAAAAEa4/fWI0Ei9arSM/s1600-h/Administration3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Administration" border="0" alt="Administration" src="http://lh4.ggpht.com/_OiMAwW7QI68/TO03UcXR9_I/AAAAAAAAEa8/onD5mLxX1s0/Administration_thumb1.png?imgmax=800" width="205" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Creation and management of issues is straightforward. It has a good integration of time tracking, at every update of an issue, the user can immediately update the time tracks.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_OiMAwW7QI68/TO03U9dBLbI/AAAAAAAAEbA/GgDCbdoMgLQ/s1600-h/UpdateIssue3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="UpdateIssue" border="0" alt="UpdateIssue" src="http://lh4.ggpht.com/_OiMAwW7QI68/TO03VXYVDiI/AAAAAAAAEbE/v6SRM4-6XvQ/UpdateIssue_thumb1.png?imgmax=800" width="719" height="293" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;With the time tracker plugin, it is even easier to track your timings. With an issues selected, you can easily let Redmine keep track of the time you spend on that issue by using the start/stop links at the top.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_OiMAwW7QI68/TO03V9iVidI/AAAAAAAAEbI/2Dich0AtQCY/s1600-h/TimeTracker3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TimeTracker" border="0" alt="TimeTracker" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03WYWn-TI/AAAAAAAAEbM/eIR__gSsgS8/TimeTracker_thumb1.png?imgmax=800" width="714" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Reporting&lt;/h2&gt;&lt;p&gt;An important part of an issue tracking system is the reporting capabilities.&lt;/p&gt;&lt;p&gt;A summary with the number of issue in open or closed state can be seen:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_OiMAwW7QI68/TO03XOG24nI/AAAAAAAAEbQ/tIfJUclB1GA/s1600-h/Summary3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Summary" border="0" alt="Summary" src="http://lh5.ggpht.com/_OiMAwW7QI68/TO03XrqZvtI/AAAAAAAAEbU/i4hiqZZHSTQ/Summary_thumb1.png?imgmax=800" width="721" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the list of issues, filters can quickly be added and columns can be chosen:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_OiMAwW7QI68/TO03YPPQEyI/AAAAAAAAEbY/4qQS-GfZ_3Y/s1600-h/IssuesFilter4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IssuesFilter" border="0" alt="IssuesFilter" src="http://lh5.ggpht.com/_OiMAwW7QI68/TO03Y_r0jtI/AAAAAAAAEbc/8Ii3nSWfJAE/IssuesFilter_thumb2.png?imgmax=800" width="720" height="421" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the roadmap overview, all versions / planned version of the project are listed with an overview of their related issues:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_OiMAwW7QI68/TO03Zf96ykI/AAAAAAAAEbg/R-5Nsp_0QWg/s1600-h/Roadmap4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Roadmap" border="0" alt="Roadmap" src="http://lh4.ggpht.com/_OiMAwW7QI68/TO03aPQeaEI/AAAAAAAAEbk/E6P8SPVuQlE/Roadmap_thumb2.png?imgmax=800" width="722" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The activity overview shows the activities performed within a project.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OiMAwW7QI68/TO03aii_WjI/AAAAAAAAEbo/1fjxmHfXZcQ/s1600-h/Activity3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Activity" border="0" alt="Activity" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03bMEAqcI/AAAAAAAAEbs/2dZXBr2x5DY/Activity_thumb1.png?imgmax=800" width="725" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The spent time within a project can be viewed in an overview:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OiMAwW7QI68/TO03btAoSgI/AAAAAAAAEbw/H0IjoQ4YOA0/s1600-h/SpentTime6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SpentTime" border="0" alt="SpentTime" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03ce7Lb8I/AAAAAAAAEb0/49jswsKtV0I/SpentTime_thumb4.png?imgmax=800" width="724" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;But custom reports can be created on the fly as well:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh3.ggpht.com/_OiMAwW7QI68/TO03c6O2RCI/AAAAAAAAEb4/elGKVTPlMC0/s1600-h/SpentTimeCustomReport4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SpentTimeCustomReport" border="0" alt="SpentTimeCustomReport" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03d_3ZD5I/AAAAAAAAEb8/BXA0UQmCyiE/SpentTimeCustomReport_thumb2.png?imgmax=800" width="722" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh4.ggpht.com/_OiMAwW7QI68/TO03eeI9WrI/AAAAAAAAEcA/OjV8jHBmJwY/s1600-h/SpentTimeCustomReportFilters8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SpentTimeCustomReportFilters" border="0" alt="SpentTimeCustomReportFilters" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03e1XJD7I/AAAAAAAAEcE/aa2glkUbhpU/SpentTimeCustomReportFilters_thumb4.png?imgmax=800" width="404" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="left"&gt;With the Timesheet plugin, an overview of all projects, all users, etc. of the spent time can be generated easily on the fly:&lt;/p&gt;&lt;p align="left"&gt;&lt;a href="http://lh5.ggpht.com/_OiMAwW7QI68/TO03f3b0pVI/AAAAAAAAEcI/uk4dBoU-sdM/s1600-h/Timesheet4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Timesheet" border="0" alt="Timesheet" src="http://lh6.ggpht.com/_OiMAwW7QI68/TO03gzFdXvI/AAAAAAAAEcM/dPJOg0JTPpk/Timesheet_thumb2.png?imgmax=800" width="722" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Integration&lt;/h2&gt;&lt;p&gt;Specific plugins exist to integrate the Redmine issue lists with &lt;a title="TortoiseSVN" href="http://tortoisesvn.tigris.org/" target="_blank"&gt;TortoiseSVN&lt;/a&gt; and &lt;a title="TortoiseGIT" href="http://code.google.com/p/tortoisegit/" target="_blank"&gt;TortoiseGIT&lt;/a&gt;: &lt;a title="Tortoise Redmine Plugin" href="http://code.google.com/p/redmine-projects/" target="_blank"&gt;Tortoise Redmine Plugin&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;For full integration, follow this manual for the &lt;a title="BugTraq properties configuration" href="http://code.google.com/p/redmine-projects/wiki/BugTraqConfiguration" target="_blank"&gt;BugTraq properties configuration&lt;/a&gt;.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/_OiMAwW7QI68/TO03hanqycI/AAAAAAAAEcQ/CDGRfxhdjVc/s1600-h/TortoiseIntegration9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TortoiseIntegration" border="0" alt="TortoiseIntegration" src="http://lh3.ggpht.com/_OiMAwW7QI68/TO03hy62X6I/AAAAAAAAEcU/WeBUbYcl4nA/TortoiseIntegration_thumb13.png?imgmax=800" width="278" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img style="margin: 0px 0px 5px" src="http://redmine-projects.googlecode.com/svn/trunk/Images/Screenshots/tsvnr_setup09.png" width="442" height="396" /&gt;&lt;/p&gt;&lt;h2&gt;Points of improvement&lt;/h2&gt;&lt;p&gt;One thing I noticed during my tests: if an issues is updated and a user changes the state of the issue, he still can select any user to assign it to. In my opinion, only users able to make changes on the selected target state of the issue, should appear in the list of users to assign the issue to. An issue tracking system should enforce all constraints of the workflow to make sure an issue can’t come in an invalid workflow state (eg. assigned user can not change the status). But this problem occurs on most tracking systems I checked (Track+, Jira, etc.). See this &lt;a title="Redmine Feature Request" href="http://www.redmine.org/issues/2937" target="_blank"&gt;feature request&lt;/a&gt;, I checked the plugin development, but so far I couldn’t make it work myself yet.&lt;/p&gt;&lt;p&gt;Update 31/01/2011: InstantRedmine package updated to Redmin 1.1.1&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-7706886263050424797?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/7706886263050424797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/11/instantrails-redmine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7706886263050424797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7706886263050424797'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/11/instantrails-redmine.html' title='InstantRails + Redmine'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_OiMAwW7QI68/TO03OxlzK9I/AAAAAAAAEak/9pbyal_2lu8/s72-c/InstantRails_thumb3.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-475413921943294426</id><published>2010-11-02T11:33:00.035+01:00</published><updated>2010-11-15T12:23:52.370+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>Excel lookups in formulas</title><content type='html'>&lt;p&gt;Different solutions exist to work with looked up data in Excel formulas: LOOKUP, VLOOKUP, HLOOKUP. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.techonthenet.com/excel/formulas/lookup.php" target="_blank"&gt;LOOKUP&lt;/a&gt;(value, lookup_range, result_range): searches for value in the lookup_range and returns the value in the result_range that is in the same position &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.techonthenet.com/excel/formulas/vlookup.php" target="_blank"&gt;VLOOKUP&lt;/a&gt;(value, table_array, index_number, not_exact_match ): searches for value in the left-most column of table_array and returns the value in the same row based on the index_number. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.techonthenet.com/excel/formulas/hlookup.php" target="_blank"&gt;HLOOKUP&lt;/a&gt;(value, table_array, index_number, not_exact_match ): searches for value in the top row of table_array and returns the value in the same column based on the index_number. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But I needed yet some other lookup functionality, something like SEARCHHLOOKUP(search_in_text, lookup_range, result_range) where values from the lookup_range are searched in the text of search_in_text and if found the value of the result_range with the same column as were it was found is returned.&lt;/p&gt;  &lt;p&gt;I wanted to be able to define some categories, with keywords linked. If a keyword occurs in a sentence, I wanted the category name as result. and I wanted to easily add new keywords for each category, without changing the formula. For example sheet CATEGORIES:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0" width="343" align="left"&gt;&lt;tbody&gt;       &lt;tr border="1"&gt;         &lt;th width="19"&gt;&lt;/th&gt;          &lt;th width="125"&gt;A&lt;/th&gt;          &lt;th width="197"&gt;B&lt;/th&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;th width="19"&gt;&lt;/th&gt;          &lt;th width="125"&gt;Fruit&lt;/th&gt;          &lt;th width="197"&gt;Food&lt;/th&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;th width="19"&gt;&lt;/th&gt;          &lt;th width="125"&gt;1&lt;/th&gt;          &lt;th width="197"&gt;2&lt;/th&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="19"&gt;1&lt;/td&gt;          &lt;td width="125"&gt;apple&lt;/td&gt;          &lt;td width="197"&gt;chocolate&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="19"&gt;2&lt;/td&gt;          &lt;td width="125"&gt;banana&lt;/td&gt;          &lt;td width="197"&gt;milk&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Next I have a cell with value: &amp;quot;Apple belongs to category&amp;quot; In another cell I want a formula (no VBS) that would result in the category name: &amp;quot;Fruit&amp;quot;. For example sheet EXAMPLE:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border="1" cellspacing="0" cellpadding="0" width="343" align="left"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;th width="16"&gt;&lt;/th&gt;          &lt;th width="192"&gt;A&lt;/th&gt;          &lt;th width="133"&gt;B&lt;/th&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="16"&gt;1&lt;/td&gt;          &lt;td width="192"&gt;Apple belongs to category&lt;/td&gt;          &lt;td width="133"&gt;Fruit&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="16"&gt;2&lt;/td&gt;          &lt;td width="192"&gt;Chocolate belongs to category&lt;/td&gt;          &lt;td width="133"&gt;Food&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;(Example &lt;a href="http://dl.dropbox.com/u/2328438/SearchLookup.xlsm" target="_blank"&gt;SearchLookup.xlsm&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;Since I need to search for the keyword in a sentence, I use the &lt;a href="http://www.techonthenet.com/excel/formulas/search.php" target="_blank"&gt;SEARCH&lt;/a&gt;(search_text, search_in_text, start_position ) function. If the result is bigger than 0, the keyword was found (not case sensitive). But if the keyword was not found, an error value #VALUE will be returned. To catch this error value, the function IFERROR(value, value_if_error) can be used. So I get this function: {=IFERROR(IF(SEARCH(CATEGORIES!$A$2:$A$5;EXAMPLE!$A1)&amp;gt;0;CATEGORIES!A$1);&amp;quot;&amp;quot;)}&lt;/p&gt;  &lt;p&gt;But this will only lookup keywords in my first column of Categories, while I want many more. I solved this by attaching a weight to each category and using the formula &lt;a href="http://www.techonthenet.com/excel/formulas/choose.php" target="_blank"&gt;CHOOSE&lt;/a&gt;(position, value1, value2, ... value_n ) to select the category name corresponding it's weight. To ignore the error values when the keyword is not found, I return 0 if an error occurs and the category weight when the keyword was found, so a MAX on that array will result in the matching category weight. To make sure that 0 is returned, only when the keyword is not found, I add any single character (µ in this case) in front of the text to search in, else 0 could be returned if the text to search in starts with the text we are searching. Now the search has to be bigger than 1 when the keyword is found.&lt;/p&gt; The result is this formula: {=CHOOSE(MAX(IFERROR(IF(SEARCH(Categories!$A$3:$A$6;&amp;quot;µ&amp;quot;&amp;amp;Example!$A1)&amp;gt;1;Categories!$A$2;0);0);IFERROR(IF(SEARCH(Categories!$B$3:$B$6;&amp;quot;µ&amp;quot;&amp;amp;Example!$A1)&amp;gt;1;Categories!$B$2;0);0))+1;&amp;quot;&amp;quot;;Categories!$A$1;Categories!$B$1)}   &lt;p&gt;Since we apply the SEARCH function on an array, the complete formula has to be an array formula, so don't forget to press CTRL+SHIFT+ENTER to save as an array function and get the &amp;quot;{=...}&amp;quot; signs around the formula.&lt;/p&gt;  &lt;p&gt;So using a combination of CHOOSE, MAX, IFERROR, IF and SEARCH functions I can lookup category names base on keywords and the keywords can be added dynamically. The only &amp;quot;problem&amp;quot; left is that I need to change my formulas when a new category is added, but at least not when adding keywords in a category.&lt;/p&gt;  &lt;p&gt;To solve this last problem, I ended up creating a '&lt;a href="http://www.ozgrid.com/VBA/Functions.htm#UDFIntro" target="_blank"&gt;User defined function&lt;/a&gt;' SEARCHHLOOKUP(search_in_text, lookup_range, result_range, (result_range_index)):&lt;/p&gt;  &lt;pre class="brush: vb"&gt;Function SearchHLookup(Search_in_text As Variant, Lookup_range As Range, Optional Result_range As Range, Optional Result_range_index As Integer)&lt;br /&gt;'''''''''''''''''''''''''''''''''''''''&lt;br /&gt;'Written by myT -  http://myTselection.blogspot.com&lt;br /&gt;'Values from the lookup_range are searched in the text of search_in_text&lt;br /&gt;'If a match is found, the value of Result_range in the same column and top row (or result_range_index) is returned&lt;br /&gt;'Example:&lt;br /&gt;'A  B&lt;br /&gt;'1  2&lt;br /&gt;'3  4&lt;br /&gt;'if 2 or 4 is found in Search_in_text, B will be returned&lt;br /&gt;'if 1 or 3 is found in Search_in_text, A will be returned&lt;br /&gt;'if none is found, empty string will be returned&lt;br /&gt;'''''''''''''''''''''''''''''''''''''''&lt;br /&gt;Dim iRow, startRow As Integer&lt;br /&gt;Dim iColumn, startColumn As Integer&lt;br /&gt;If Result_range Is Nothing Then&lt;br /&gt;    startRow = 2&lt;br /&gt;Else&lt;br /&gt;    startRow = 1&lt;br /&gt;End If&lt;br /&gt;startColumn = 1&lt;br /&gt;For iColumn = startColumn To Lookup_range.Columns.Count&lt;br /&gt;    For iRow = startRow To Lookup_range.Rows.Count&lt;br /&gt;        If Not (Lookup_range(iRow, iColumn) = &amp;quot;&amp;quot;) Then&lt;br /&gt;            If (InStr(1, Search_in_text, Lookup_range(iRow, iColumn), 1) &amp;gt; 0) Then&lt;br /&gt;                If Result_range Is Nothing Then&lt;br /&gt;                    SearchHLookup = Lookup_range(1, iColumn)&lt;br /&gt;                ElseIf Not (Result_range_index = 0) Then&lt;br /&gt;                    SearchHLookup = Result_range(Result_range_index, iColumn)&lt;br /&gt;                Else&lt;br /&gt;                    SearchHLookup = Result_range(1, iColumn)&lt;br /&gt;                End If&lt;br /&gt;                    &lt;br /&gt;                Exit Function&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;        Next iRow&lt;br /&gt;    Next iColumn&lt;br /&gt;    SearchHLookup = &amp;quot;&amp;quot;&lt;br /&gt;End Function&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So in my example, the function I use now has been simplified to: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;=SearchHLookup(A1;Categories!$A$3:$B$4;Categories!$A$1:$B$1;1) &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Of course, a SearchVLookup could be made easily as well: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Function SearchVLookup(Search_in_text As Variant, Lookup_range As Range, Optional Result_range As Range, Optional Result_range_index As Integer)&lt;br /&gt;'''''''''''''''''''''''''''''''''''''''&lt;br /&gt;'Written by myT -  http://myTselection.blogspot.com&lt;br /&gt;'Values from the lookup_range are searched in the text of search_in_text&lt;br /&gt;'If a match is found, the value of Result_range in the same column and top row (or result_range_index) is returned&lt;br /&gt;'Example:&lt;br /&gt;'A  1  2&lt;br /&gt;'B  3  4&lt;br /&gt;'if 1 or 2 is found in Search_in_text, A will be returned&lt;br /&gt;'if 3 or 4 is found in Search_in_text, B will be returned&lt;br /&gt;'if none is found, empty string will be returned&lt;br /&gt;'''''''''''''''''''''''''''''''''''''''&lt;br /&gt;Dim iRow, startRow As Integer&lt;br /&gt;Dim iColumn, startColumn As Integer&lt;br /&gt;If Result_range Is Nothing Then&lt;br /&gt;    startColumn = 2&lt;br /&gt;Else&lt;br /&gt;    startColumn = 1&lt;br /&gt;End If&lt;br /&gt;startRow = 1&lt;br /&gt;For iRow = startRow To Lookup_range.Rows.Count&lt;br /&gt;    For iColumn = startColumn To Lookup_range.Columns.Count&lt;br /&gt;        If Not (Lookup_range(iRow, iColumn) = &amp;quot;&amp;quot;) Then&lt;br /&gt;            If (InStr(1, Search_in_text, Lookup_range(iRow, iColumn), 1) &amp;gt; 0) Then&lt;br /&gt;                If Result_range Is Nothing Then&lt;br /&gt;                    SearchVLookup = Lookup_range(iRow, 1)&lt;br /&gt;                ElseIf Not (Result_range_index = 0) Then&lt;br /&gt;                    SearchVLookup = Result_range(iRow, Result_range_index)&lt;br /&gt;                Else&lt;br /&gt;                    SearchVLookup = Result_range(iRow, 1)&lt;br /&gt;                End If&lt;br /&gt;                    &lt;br /&gt;                Exit Function&lt;br /&gt;            End If&lt;br /&gt;        End If&lt;br /&gt;        Next iColumn&lt;br /&gt;    Next iRow&lt;br /&gt;    SearchVLookup = &amp;quot;&amp;quot;&lt;br /&gt;End Function&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The user defined function needs to be defined in a module. Example: &lt;a href="http://dl.dropbox.com/u/2328438/SearchLookup.xlsm" target="_blank"&gt;SearchLookup.xlsm&lt;/a&gt;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-475413921943294426?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/475413921943294426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/11/excel-lookups-in-fomulas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/475413921943294426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/475413921943294426'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/11/excel-lookups-in-fomulas.html' title='Excel lookups in formulas'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-1246123860686262865</id><published>2010-09-23T12:51:00.006+02:00</published><updated>2010-11-15T12:27:29.207+01:00</updated><title type='text'>Userfriendly encryption (on USB sticks)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.rohos.com/images/rohos_mini_logo_new.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 130px; height: 87px;" src="http://www.rohos.com/images/rohos_mini_logo_new.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Previously, I always used &lt;a target="_blank" href="http://mytselection.blogspot.com/2009/12/freeotfe-command-line.html"&gt;FreeOTFE&lt;/a&gt; to encrypt personal files on my USB sticks. The problem is that I don't find the '&lt;a target="_blank" href="http://www.freeotfe.org/main_explorer_differences.html"&gt;FreeOTFE Explorer&lt;/a&gt;' very user friendly and safe, since files need to be exported before you can open them. This 'FreeOTFE Explorer' is the only way to use a FreeOTFE encrypted container on a pc with no administrator rights.&lt;br /&gt;So now I found a better little tool: &lt;a target="_blank" href="http://www.rohos.com/products/rohos-mini-drive/"&gt;Rohos Mini Drive&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;free (official 2GB encrypted disk limited for freeware, but disks created with the free &lt;a target="_blank" href="http://www.rohos.com/betta/rbrowser.zip"&gt;Rohos Disk Browser&lt;/a&gt; can be as large as you want)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;easy to use, with AES 256bit encryption&lt;/li&gt;&lt;br /&gt;&lt;li&gt;unique &lt;a target="_blank" href="http://www.rohos.com/2009/10/on-the-fly-encryption-without-admin-rights/"&gt;on-the-fly encryption&lt;/a&gt; with no administrator rights, the disk browser allows working with files as regular (double click any file to open it immediately)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a target="_blank" href="http://www.rohos.com/rohos_mini.exe"&gt;Download Rohos Min Drive&lt;/a&gt; 2,2MB.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When setting up a USB stick with Rohos, it will copy the 'Rohos Mini.exe' and 'Rohos Disk Browser' to your USB stick. You can always use the 'Rohos Mini.exe', if it detects you have currently no administrator rights, it will automatically open the Disk Browser application (located in a hidden folder [drive]:\_rohos\rbrowser.exe).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Btw, Rohos has some other very nice applications as well, like the &lt;a targe="_blank" href="http://www.rohos.com/products/rohos-face-logon/"&gt;Rohos Face Logon&lt;/a&gt; to login in Windows with webcam (or see a picture of people who tried to break into your computer)...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-1246123860686262865?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/1246123860686262865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/09/userfriendly-encryption-on-usb-sticks.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/1246123860686262865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/1246123860686262865'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/09/userfriendly-encryption-on-usb-sticks.html' title='Userfriendly encryption (on USB sticks)'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-8333444221572072682</id><published>2010-03-28T22:56:00.006+02:00</published><updated>2010-11-22T14:02:32.669+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='calculator'/><title type='text'>Exam point counter (Excel)</title><content type='html'>&lt;p&gt;To help counting points during correction of the exams, I made some Excel VBS. When the exams are corrected, next to every error a -0,5 -1 or -1,5 is written, and these have to be substracted from the total points of every part. To make it possible to perform this little task one handed, I linked the 'h' key to -0,5, the 'j' key to -1 and the 'k' key to -1,5. Now the exams can be run through very fast and the result of every part is shown immediately. To keep track of the total points of every part for every student, I linked the 'x' key to save the result in a sheet with the totals. Finally, the 'c' key is linked to clear the contens of a column with all substractions of a part of the exam.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The exepected usage of the sheet:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;fill in the totals of every part of the exam in the top most row of the first sheet (called 'Punten teller'/'Point counter').&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) if the maximum points in a part is different from the weight of that part in the complete exam, the second row in the first sheet can be used. The points will be recalculated to match the weight.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) fill in the name of every part, for example: excercises, theory, vocabulary, etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;select the cell in the fifth row of the first column an run through the exam. For each part of the exam, a next column should be used&lt;/li&gt;&lt;br /&gt;&lt;li&gt;while running through a part of the exam, use the keys 'h', 'j' and 'k' for every mistake in the exam, respectively substracting 0,5 1 or 1,5 points&lt;/li&gt;&lt;br /&gt;&lt;li&gt;when a part of the exam is finished, you can see the total points in the third row of that column&lt;/li&gt;&lt;br /&gt;&lt;li&gt;if you want to keep that result in the totals list, press the 'x' key, the statusbar will clearly show the changes applied in the totals list (so you don't need to switch the sheets every time to verify)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;if you want to recount the points of that part again, press the 'c' key to clear the data of that column (exam part), without updating the totals list&lt;/li&gt;&lt;br /&gt;&lt;li&gt;if you want to clear the column (part of exam) and go to the next part, use the 'n' key&lt;/li&gt;&lt;br /&gt;&lt;li&gt;when every part is done, the points of each part will be saved in the 'Totaal'/'Total' sheet for every student, and the total is converted to a % point&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) for every student, a name can be added in the second column of the 'Totaal'/'Total' sheet&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the total point of every part are rounded as for example 6.0; 6.1; 6.2 go to 6, 6.3,6.4,6.5,6.6 and 6.7 go to 6.5 and 6.8 and 6.9 go to 7&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) comments for the exam of every student can be added in the 'Totaal'/'Total' sheet (last column)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;to get a nice overview of results of every student in a separate document (vakrapport/course report), &lt;a href="http://dl.dropbox.com/u/2328438/Vakrapport template.doc" target="_blank" title="Vakrapport Word Template"&gt;a word template&lt;/a&gt; using Words build in MailMerge is created. It can be used in combination with a sheet based on this Excel template. The template can be updated, the result will be a separate page with points, median and comments for every individual student (a hidden sheet 'MailMerge' in the Exel template is used for this). To get best results using this template, it is advised to fill in the topics in this list marked as '(optional)'&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/2328438/Examen punten teller.xltm" target="_blank" title="Excel template punten teller"&gt;Excel sheet template&lt;/a&gt; (&lt;a href="http://dl.dropbox.com/u/2328438/Exam point counter.xltm" target="_blank" title="Excel template point counter (english)"&gt;english version&lt;/a&gt;, &lt;a href="http://dl.dropbox.com/u/2328438/Examen punten teller.xlt" target="_blank" title="Excel template punten teller (Excel 97-2003)"&gt;dutch 2003 version&lt;/a&gt;, &lt;a href="http://dl.dropbox.com/u/2328438/Exam point counter.xlt" target="_blank" title="Excel template point counter (english Excel 97-2003)"&gt;english 2003 version&lt;/a&gt;) (when opening a new sheet will be created, so the template will always be kept intact)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;29/03/2010: Updated template, english and 2003 versions added&lt;/p&gt;&lt;br /&gt;&lt;p&gt;04/04/2010: Updated template, added vakrapport template&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-8333444221572072682?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/8333444221572072682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2010/03/exam-point-counter-excel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8333444221572072682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8333444221572072682'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2010/03/exam-point-counter-excel.html' title='Exam point counter (Excel)'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-7902069951572649436</id><published>2009-12-22T13:59:00.003+01:00</published><updated>2009-12-22T14:03:28.306+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tweaks tricks scripts encryption portable'/><title type='text'>FreeOTFE command line</title><content type='html'>&lt;p&gt;&lt;a href="http://www.freeotfe.org/" target="_blank" title="FreeOTFE"&gt;FreeOTFE&lt;/a&gt; is a very nice freeware encryption program. It is very similar to the well known &lt;a href="http://www.truecrypt.org/" target="_blank" title="TrueCrypt"&gt;TrueCrypt&lt;/a&gt; application, but I prefer FreeOTFE since it has a PocketPC version and it's thus more portable.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Like I mentioned in &lt;a href="http://mytselection.blogspot.com/2009/10/dropbox-daily-usage.html" target="_blank" title="DropBox daily usage - myTselection"&gt;a previous post&lt;/a&gt;, I use FreeOTFE in combination with Dropbox. I encrypt a complete portable DropBox folder to make sure all data and account information is kept save whenever I would lose my USB stick. This is possible since FreeOTFE can very easily be used as a portable application and thus perfect for any USB stick.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Since I use my USB stick with portable DropBox and portable Roboform2Go almost every day, I made some small batch scripts to easily start up the FreeOTFE drive and the portable applications within the encrypted volume. So far I have created these scripts:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;FreeOTFEAutoLoad.bat: Batch script to mount a volume with a portable FreeOTFE, the volume to mount has to be specified as first parameter when running the script, so for example: FreeOTFEAutoLoad.bat "example.vol"&lt;/p&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;&lt;br /&gt;   @echo off&lt;br /&gt;   TITLE Auto load FreeOTFE&lt;br /&gt;   FreeOTFE\FreeOTFE.exe /portable start /silent&lt;br /&gt;   FreeOTFE\FreeOTFE.exe /mount /volume %1%&lt;br /&gt;   exit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;FreeOTFEStop.bat: Batch script to unmount all volumes that are started using a portable FreeOTFE.&lt;/p&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;&lt;br /&gt;@echo off&lt;br /&gt;TITLE Stop FreeOTFE&lt;br /&gt;:DISMOUNT&lt;br /&gt;        FreeOTFE\FreeOTFE.exe /dismount all /silent&lt;br /&gt;        IF %ERRORLEVEL% NEQ 0 GOTO DISMOUNTFAILED&lt;br /&gt;        GOTO STOPPORTABLE&lt;br /&gt;:STOPPORTABLE&lt;br /&gt;        FreeOTFE\FreeOTFE.exe /dismount all /silent /force&lt;br /&gt;        FreeOTFE\FreeOTFE.exe /portable stop /silent&lt;br /&gt;        GOTO EXIT&lt;br /&gt;:DISMOUNTFAILED&lt;br /&gt;        echo Dismount of FreeOTFE failed: %ERRORLEVEL%.&lt;br /&gt;        echo Make sure all locks on FreeOTFE disks are removed, then continue this process.&lt;br /&gt;        SET INPUT=&lt;br /&gt;        set /p INPUT=Press enter to try again, f to force dismount, e to exit. &lt;br /&gt;        if /i "%INPUT%" == "f" goto FORCEDISMOUNT&lt;br /&gt;        if /i "%INPUT%" == "e" goto EXIT&lt;br /&gt;        FreeOTFE\FreeOTFE.exe /dismount all /silent&lt;br /&gt;        IF %ERRORLEVEL% NEQ 0 GOTO DISMOUNTFAILED&lt;br /&gt;        GOTO STOPPORTABLE&lt;br /&gt;:FORCEDISMOUNT&lt;br /&gt;        FreeOTFE\FreeOTFE.exe /dismount all /silent /force&lt;br /&gt;        IF %ERRORLEVEL% NEQ 0 GOTO DISMOUNTFAILED&lt;br /&gt;        GOTO STOPPORTABLE&lt;br /&gt;:EXIT&lt;br /&gt;        exit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;FreeOTFE - volume.bat: Batch script to automount a specific volume and launch some script from within the encrypted volume once it is mounted.&lt;/p&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;&lt;br /&gt;@echo on&lt;br /&gt;start "AutoLoad" /wait FreeOTFEAutoLoad.bat "example.vol"&lt;br /&gt;&lt;br /&gt;set _Target=NotFound&lt;br /&gt;set _TargetName=REPLACE_THIS_TEXT_WITH_THE_EXACT_NAME_OF_YOUR_MOUNTED_FREEOTFE_VOLUME&lt;br /&gt;&lt;br /&gt;for /f usebackq %%a in (`Drives.exe -f %_TargetName%`) do set _Target=%%a&lt;br /&gt;&lt;br /&gt;if "%_Target%" == "NotFound" (&lt;br /&gt;    echo Unable to find target drive named "%_TargetName%"&lt;br /&gt;    goto :EOF&lt;br /&gt;)&lt;br /&gt;pushd %_Target%&lt;br /&gt;%_Target%\SCRIPT_OR_APPLICATION_TO_BE_STARTED_FROM_THE_MOUNTED_VOLUME.bat&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;When launching FreeOTFE it can take some time to load all cyphers and hashes included, so I created my own archive only including the cypher and hashes I use (the most secure onces). Now FreeOTFE will launch much faster. The application "Drives.exe" is &lt;a href="http://fixunix.com/ms-dos/434964-truecrypt-drive-letter-has-been-assigned.html" target="_blank" title="Drives - Scott Seligman"&gt;created by Scott Seligman&lt;/a&gt; and is used to determine the drive letter based on the name of a volume. The minimal portable FreeOTFE with all scripts above can be downloaded using &lt;a href="http://dl.dropbox.com/u/2328438/FreeOTFE.zip" title="FreeOTFE command line - myTselection"&gt;this link&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-7902069951572649436?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/7902069951572649436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/12/freeotfe-command-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7902069951572649436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7902069951572649436'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/12/freeotfe-command-line.html' title='FreeOTFE command line'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-5527685391437219054</id><published>2009-11-24T19:32:00.003+01:00</published><updated>2009-12-04T10:46:44.715+01:00</updated><title type='text'>Extra features for Log4j DailyRollingFileAppender</title><content type='html'>&lt;p style="TEXT-ALIGN: justify"&gt;&lt;a href="http://logging.apache.org/log4j/1.2/index.html" target="_blank" title="Apache Log4j"&gt;Log4j&lt;/a&gt; has some nice features and supports many &lt;a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Appender.html" target="_blank" title="Apache log4j appenders API"&gt;appenders&lt;/a&gt;, but so far we never had a file appender with all features as it should be. Recently we wanted to write our own appende&lt;img src="http://logging.apache.org/log4j/1.2/images/logo.jpg" style="WIDTH: 135px; DISPLAY: inline; FLOAT: right; HEIGHT: 118px" height="30" width="28"/&gt;r but before doing so we found &lt;a href="http://blog.justtechnologies.ca/2008/07/improving-log4j-dailyrollingfileappende.html" target="_blank" title="CustodyDailyRollingFileAppender"&gt;Ryan Kimber&lt;/a&gt; already had the same idea and did a good job rewriting the original &lt;a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html" target="_blank" title="DailyRollingFileAppender API"&gt;DailyRollingFileAppender&lt;/a&gt;: the &lt;strong&gt;CustodianDailyRollingFileAppender&lt;/strong&gt;. On his &lt;a href="http://blog.justtechnologies.ca/2008/07/improving-log4j-dailyrollingfileappende.html" target="_blank" title="CustodyDailyRollingFileAppender"&gt;blog&lt;/a&gt; he provides some info on how he updated the appender. We made some very small changes to make it completely working for us and to make sure the log file directory is created if it didn't exist.&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;make sure the &lt;strong&gt;directory&lt;/strong&gt; structure to the specified log file exists&lt;/li&gt;&lt;br /&gt;&lt;li&gt;create a new log file for &lt;strong&gt;each day&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;compress&lt;/strong&gt; log files older than today&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;remove&lt;/strong&gt; log files older than a specified number of days&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/2328438/CustodianDailyRollingFileAppender.java" target="_blank" title="Source code for CustodianDailyRollingFileAppender.java"&gt;CustodianDailyRollingFileAppender.java source&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Example of log4j configuration:&lt;/p&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;log4j.rootLogger=INFO, FILE&lt;br /&gt;log4j.appender.FILE=com.myt.common.logging.CustodianDailyRollingFileAppender&lt;br /&gt;log4j.appender.FILE.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.FILE.layout.ConversionPattern=%d{MMM dd yyyy HH:mm:ss,SSS} [%t] %-5p %l - %m%n&lt;br /&gt;log4j.appender.FILE.File=/var/log/myt.log&lt;br /&gt;log4j.appender.FILE.DatePattern='.'yyyy-MM-dd&lt;br /&gt;log4j.appender.FILE.MaxNumberOfDays=30&lt;br /&gt;log4j.appender.FILE.CompressBackups=true&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-5527685391437219054?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/5527685391437219054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/11/extra-features-for-log4j.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5527685391437219054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5527685391437219054'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/11/extra-features-for-log4j.html' title='Extra features for Log4j DailyRollingFileAppender'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-2947959653187827494</id><published>2009-11-18T21:19:00.007+01:00</published><updated>2010-12-06T17:47:20.148+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='WEP'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='wifi'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='WPA'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>How to choose the right WiFi channel</title><content type='html'>&lt;p&gt;If you setup your wireless access point, you may want to configure it in such a way minimizing interference in your neighborhood. I found this &lt;a href="http://www.geekzone.co.nz/inquisitor/2996" target="_blank" title="How to chose the right Wifi channel"&gt;interesting post&lt;/a&gt; with some tips:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;There must be &lt;strong&gt;a spacing of at least 5 channels (or more) between each WiFi network&lt;/strong&gt; in order to avoid interferences. Two WiFi networks operating on the same channel are forced to share bandwidth, as they can't "talk" simultaneously, which halves each network's bandwidth. In order to evade this effect, you need to change your access point's channel, but taking the adjacent one won't do it, as WiFi channels are arranged in an overlapping pattern, as you can see in the scheme below. The default channel of most wifi devices is channel 6, so &lt;strong&gt;in many cases channel 11 or higher are a good choice&lt;/strong&gt;. Using &lt;a href="http://www.netstumbler.com/downloads/" target="_blank" title="NetStumbler download"&gt;NetStumbler&lt;/a&gt; one can very easily see which channels is used for each access point.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img src="http://www.airportal.de/80211-frequency-channel-map.jpg" style="WIDTH: 600px" alt="" width="600"/&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If all your WiFi-devices support 802.11g (the 54 MBit/s WiFi-variant), you should set your router to 802.11g&lt;strong&gt;-only&lt;/strong&gt; mode, as the 802.11b-compatibility impacts on bandwidth and range even among 802.11g-devices.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Another possible cause of low performance may be &lt;a href="http://en.wikipedia.org/wiki/802.11_non-standard_equipment#Non-standard_channel_bonding"&gt;proprietary WiFi acceleration modes&lt;/a&gt; like "SuperG", "MAXg", "125 High Speed Mode" or "SpeedBooster", if not all devices in your network support the very same mode, why you should disable those.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Also note that a lot of cordless phones in NZ operate at the 2.4 GHz band like Wifi and so most of them cause interferences WiFi, that can't be avoided by a channel change, since those phones use a very broad spectrum or perform permanent frequency hopping.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;If you own a 2.4 GHz phone, try switching it off and removing the power supply of it's base station. In case your wireless signal improves, replace your cordless phone with a new one operating at 1.8 GHz or 5.8 GHz.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A cheap and easy solution to extend the coverage of your WiFi environment is to place a repeater at the correct location. It will repeat the wireless signal and extend the coverage (no cables needed), without creating a new network. Many very cheap (+-10euro) wifi access points (for example my DLink DWL-G700AP) can be &lt;a href="http://www.docstoc.com/docs/2583739/How-do-I-configure-repeater-mode-on-DWL-G700AP"&gt;configured to work as a repeater&lt;/a&gt; instead of the default access point functionality.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Transmit power&lt;/span&gt;: In most cases, the transmit power should be set to the highest value. This maximizes range, which reduces the number of access points and cost of the system. If you're trying to increase the capacity of the network by placing access points closer together, set the power to a lower value to decease overlap and potential interference. Lower power settings also limit the wireless signals from propagating outside the physically controlled area of the facility, which improves security.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Service Set IDentifier (SSID)&lt;/span&gt;: The SSID defines the name of a WLAN that users associate with. By default, the SSID is set to a common value, such as tsunami for Cisco products. In order to improve security, you should change the SSID to a non-default value to minimize unauthorized users from associating with the access point. For even better security, some access points let you disable SSID broadcasting. This keeps most client device operating systems (e.g., Windows XP) from sniffing the SSID from access point beacons and automatically associating with the access point. Someone could, however, obtain the SSID using other sniffing tools that obtain the SSID from 802.11 frames when users first associate with the access point.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Data rate&lt;/span&gt;: Most access points allow you to identify acceptable data rates. By default, 802.11b access points operate at 1, 2, 5.5, and 11Mbps data rates, depending on the quality of the link between the client device and the access point. As the link quality deteriorates, the access point will automatically throttle down to lower data rates in an attempt to maintain a connection. You can, however, exclude specific data rates. For example, you may want communications only at 11Mbps or not at all. This could be necessary to support higher bandwidth applications.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Beacon interval&lt;/span&gt;: The beacon interval is the amount of time between access point beacon transmissions. The default value for this interval is generally 10ms, that is 10 beacons sent every second. This is sufficient to support the mobility speed of users within an office environment. You can increase the beacon interval and have lower overhead on the network, but then roaming will likely suffer. It's best to leave this setting alone.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Request-to-send / clear-to-send (RTS / CTS)&lt;/span&gt;: The RTS / CTS function alleviates collisions due to hidden nodes, which is when multiple stations are within range of a common access point but out of range of each other. In most cases, it's best to disable RTS / CTS, but refer to a previous tutorial for cases where RTS / CTS may be beneficial and what threshold values to use.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Fragmentation&lt;/span&gt;: Fragmentation can help reduce the amount of data needing retransmission when collisions or radio frequency (RF) interference occurs. As with RTS/ CTS, refer to a previous tutorial for cases where fragmentation may be beneficial and applicable threshold values.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Wifi security&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The impact on the performance by using WEP or WPA really depends on the router. Underpowered old routers don't like the encryption overhead and will slow down somewhat. It is expected to be about 10-15% for either WEP or WPA on older units. In many cases, it's also affected by the speed of the client computer, especially if the WPA encryption is done in driver. Fortunately, this hasn't been the case for many years. These days, there's hardly any slowdown of using WEP or WPA on the performance. However, there's a huge &lt;a href="http://www.ezlan.net/wpa_wep.html" target="_blank" title="Technical overview of WEP and WPA"&gt;difference in security between WEP and WPA&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A nice &lt;a href="http://www.tech-archive.net/Archive/WinXP/microsoft.public.windowsxp.network_web/2009-04/msg00128.html" target="_blank" title="Wifi security overview"&gt;overview&lt;/a&gt; on the weakest to the strongest wireless security capacity is:&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ul class="noindent"&gt;&lt;br /&gt;&lt;li&gt;Considered as not safe:&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ul class="noindent"&gt;&lt;br /&gt;&lt;li&gt;No Security&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Switching Off SSID: same has No Security. SSID can be easily sniffed even if it is Off&lt;/li&gt;&lt;br /&gt;&lt;li&gt;MAC Filtering: only to be used if nothing else is available, MAC number can be easily Spoofed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WEP64: Easy to "Break" by knowledgeable people&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WEP128: A little Harder, but still easy to "Break" by knowledgeable people&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Considered as &lt;strong&gt;safe&lt;/strong&gt;:&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ul class="noindent"&gt;&lt;br /&gt;&lt;li&gt;WPA-PSK: Very Hard to Break&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WPA-AES: Not functionally Breakable&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;WPA2&lt;/strong&gt;: Not functionally Breakable&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you use Windows XP bellow SP3 and did not updated it, you would have to download the &lt;a href="http://support.microsoft.com/kb/893357" target="_blank" title="Enable WPA2 in older Windows XP systems"&gt;WPA2 patch from Microsoft&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The documentation of your Wireless devices (Wireless Router, and Wireless Computer's Card) should state the type of security that is available with your Wireless hardware.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;All devices MUST be set to the same security level using the same pass phrase. Therefore the security must be set according whatever is the best possible of one of the Wireless devices. I.e. even if most of your system might be capable to be configured to the max. with WPA2, but one device is only capable to be configured to max . of WEP, to whole system must be configured to WEP.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Even when using WPA2, one still has to be careful and never use the default WEP or WPA password and default SSID. &lt;a href="http://www.gnucitizen.org/blog/default-key-algorithm-in-thomson-and-bt-home-hub-routers/" target="_blank" title="Default key algorithms in Thomson and BT Home Hubs routers"&gt;Different applications&lt;/a&gt; exist to recover the default WEP/WPA password based on the SSID. For Alcatel / Thomson SpeedTouch router this &lt;a href="http://www.nickkusters.com/SpeedTouch.aspx" target="_blank" title="SpeedTouch SSID default password generator"&gt;online generator&lt;/a&gt; can be very easy to recover the default password based on the SSID.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-2947959653187827494?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/2947959653187827494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/11/how-to-chose-right-wifi-channel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2947959653187827494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2947959653187827494'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/11/how-to-chose-right-wifi-channel.html' title='How to choose the right WiFi channel'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-3608484193919605149</id><published>2009-11-16T00:03:00.006+01:00</published><updated>2010-12-03T09:01:04.725+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='rocker'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='bat'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='convertor'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><category scheme='http://www.blogger.com/atom/ns#' term='log'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='calculator'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Recovery tools boot USB stick</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.itechnews.net/wp-content/uploads/2009/07/Victorinox-SwissFlash-16-GB-USB-Drive-Laser-Pointer.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 145px;" src="http://www.itechnews.net/wp-content/uploads/2009/07/Victorinox-SwissFlash-16-GB-USB-Drive-Laser-Pointer.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Based on &lt;a href="http://www.hiren.info/pages/bootcd" target="_blank" title="Hiren's BootCD"&gt;Hiren's Boot CD&lt;/a&gt; 12 I created my personal Boot USB stick to be as complete as possible (containing more than 500 portable tools, 2,30GB). The original Hiren recovery CD contains many very useful tools to recover, tweak or patch pc's, divided into the following categories: Partition Tools, Backup Tools, Recovery Tools, Testing tools, RAM testing tools, Hard disk tools, System information tools, Master Boot Recovery tools, BIOS CMOS tools, Multimedia tools, Password tools, NTFS tools, Browser File manager tools, Other tools, Dos tools, Optimizers, Network tools, Process tools, Registry tools, Startup tools, Tweakers and Antivirus tools. A portable 'mini Windows XP' that can be run from the stick is available as well at boot time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Many of the tools are available by booting up from the USB stick, but others need to be run into a Windows environment. These windows tools can be easily accessed by using the 'HBCDMenu.exe' tool which will be started when the cd or USB stick is started within a running Windows environment. Since the tools available within the 'HBCDMenu.exe' can be configured very easily using a 'HBCDMenu.csv' file, I created &lt;a href="http://dl.dropbox.com/u/2328438/HBCDMenu.xls" title="HBCDMenu.csv creator"&gt;an Excel file&lt;/a&gt; to change the configuration an export to the csv file easier. Using this Excel it is much easier to move and rearrange the tools. Next I added all the tools I was still missing to make them available through the 'HBCDMenu.exe' tool. All tools are started using a DOS bat script and an UHARC archive. The archive is extracted in the PC's %temp% folder and started. All tools should be completely portable so no tool settings in the registry are kept after running them. I created &lt;a href="http://dl.dropbox.com/u/2328438/HbcdUhaStart.cmd" title="HbcdUhaStart.cmd generic batch script for HBCD uharc files"&gt;a generic batch script&lt;/a&gt; to be able to run all tools in different modes: normal, just open a command window, just open an explorer windows, run the tool in &lt;a href="http://www.sandboxie.com/" target="_blank"&gt;Sandboxie&lt;/a&gt;, show online info on the tool, convert the tool into a zip file, force extraction of the uharc file. The mode is set by creating a specific file in the %temp% folder.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I keep all my personal files in a secured FreeOTFE file to make sure if I ever lose the stick no personal information can be discovered.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Besides the Hiren tools I also converted the latest &lt;a href="http://www.remote-exploit.org/backtrack.html" target="_blank" title="BackTrack remote-exploit"&gt;BackTrack&lt;/a&gt; 4 bootable ISO to make it boot from a USB stick and added this into the Hiren boot screen menu. This live cd linux distribution is focused on penetration testing and perfect &lt;a href="http://ryanunderdown.com/linux/cracking-wep-using-backtrack.php" target="_blank" title="WEP cracking using BackTrack"&gt;for quick and easy WEP cracking&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.hiren.info/pages/bootcd-on-usb-disk" target="_blank" title="Hiren's BootCD from USB"&gt;On the website of Hiren&lt;/a&gt;, a good explanation is provided by Hiren on how to easily convert the BootCD into a bootable USB stick using Grub4Dos. I used this '&lt;a href="http://dl.dropbox.com/u/2328438/menu.lst" title="Updated boot menu to include BackTrack launch"&gt;menu.lst&lt;/a&gt;' as boot menu so it includes the launch of the BackTrack live environment and portable Mini Windows XP. Within an Windows environment, this '&lt;a href="http://dl.dropbox.com/u/2328438/autorun.inf" title="Modified autorun.inf"&gt;autorun.inf&lt;/a&gt;' file is used to make it easier to start the 'autorun.exe' tool and other commonly used tools. To keep a backup of all my configuration, I configured a specific &lt;a href="http://mytselection.blogspot.com/2009/10/dropbox-daily-usage.html" target="_blank" title="Portable Dropbox"&gt;portable&lt;/a&gt; &lt;a href="http://www.dropbox.com/" target="_blank" title="Dropbox"&gt;Dropbox&lt;/a&gt; so I can access all my tools online and keep them in sync on different locations.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The USB stick with all the extra tools requires now at least 2,29GB (I use it on a 8GB stick). I also added many of my extra tools into the CD iso file, but to keep it burnable onto a 80minute CD, some of the large tools didn't fit (office portable, tor browser, skype, toad, oracle client).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Compared to the original Hiren 10 boot cd, I've added different Windows tools. In the &lt;a href="http://dl.dropbox.com/u/2328438/HBCDMenu.xls" title="Hiren HBCDMenu CSV creator (Excel)"&gt;HBCDMenu cvs creator Excel&lt;/a&gt;, the complete list of all the tools are ordered in comprehensive categories. Many of these tools come from &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx" target="_blank" title="Sysinternals windows tools"&gt;Sysinternals&lt;/a&gt; and &lt;a href="http://www.nirsoft.net/" target="_blank" title="NirSoft"&gt;Nirsoft&lt;/a&gt; since they provide some very useful portable little tools.&lt;/p&gt;&lt;br /&gt;Update 25/11/2009: removed long list of personally added tools&lt;br /&gt;Update 3/12/2010: update for Hiren Boot CD 12&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-3608484193919605149?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/3608484193919605149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/11/recovery-tools-boot-usb-stick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3608484193919605149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3608484193919605149'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/11/recovery-tools-boot-usb-stick.html' title='Recovery tools boot USB stick'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-3051745415610713586</id><published>2009-10-26T18:17:00.005+01:00</published><updated>2011-08-11T12:51:02.124+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>Regular Expressions Regex</title><content type='html'>&lt;p&gt;I mostly use &lt;a href="http://www.regexbuddy.com/" target="_blank" title="Regex Buddy"&gt;RegexBuddy&lt;/a&gt; to create and test my regular expressions, but I just came across some nice free online tools &lt;a href="http://gskinner.com/RegExr/" target="_blank" title="Flash based RegExr"&gt;RegExr&lt;/a&gt; , &lt;a href="http://www.rexv.org/" target="_blank" title="Regular Expression evaluator PHP - Posix - Javascript"&gt;RexV&lt;/a&gt;, &lt;a href="http://www.jslab.dk/tools.regex.php" target="_blank" title="JavaScript Regex Generator"&gt;JavaScript Regex Generator&lt;/a&gt; and &lt;a href="http://www.nregex.com/nregex/default.aspx" target="_blank" title="Nregex"&gt;Nregex&lt;/a&gt; to create and test regular expressions. Also useful, a &lt;a href="http://resourcesmix.info/big-collection-of-regular-expressions-toolbox-regex/" target="_blank" title="Regex toolbox"&gt;toolbox&lt;/a&gt;, &lt;a href="http://www.robvanderwoude.com/regexptools.php" target="_blank" title="RegExp Tools"&gt;RegExp Tools&lt;/a&gt; and &lt;a href="http://www.regular-expressions.info/examples.html" target="_blank" title="Regular Expression examples"&gt;some examples&lt;/a&gt; of some commonly required regular expressions...&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.fileformat.info/tool/regex.htm" target="_blank"&gt;Java regex tester&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-3051745415610713586?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/3051745415610713586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/10/regular-expressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3051745415610713586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3051745415610713586'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/10/regular-expressions.html' title='Regular Expressions Regex'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-7843481392415474143</id><published>2009-10-16T09:52:00.033+02:00</published><updated>2011-04-03T16:43:17.843+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><title type='text'>Dropbox - daily usage</title><content type='html'>&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://www.getdropbox.com/static/images/dropbox_logo_home.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; width: 290px; float: right; border-top-width: 0px; border-bottom-width: 0px; height: 75px; border-left-width: 0px; cursor: hand" border="0" alt="" src="https://www.getdropbox.com/static/images/dropbox_logo_home.png" /&gt;&lt;/a&gt; &lt;a href="http://www.getdropbox.com"&gt;Dropbox&lt;/a&gt; is a free online service to easily synchronize and backup your data. It can be very useful and it has some very nice features, but it has some limitations too.&lt;/p&gt;  &lt;h2&gt;Dropbox features: &lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;2GB free online storage, easy registration. &lt;/li&gt;    &lt;li&gt;Easy sync to different computers / Macs. &lt;/li&gt;    &lt;li&gt;Files are always reachable using the Dropbox website. &lt;/li&gt;    &lt;li&gt;Dropbox keeps 30 days version and deleted files history. &lt;/li&gt;    &lt;li&gt;A public folder with direct static file url's makes it possible to host your site on Dropbox server. &lt;/li&gt;    &lt;li&gt;Sharing of folders between Dropbox accounts is possible. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Dropbox limitation: &lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;No filtering on files / folders is possible. &lt;/li&gt;    &lt;li&gt;For each account, one folder is synchronized. You need to use &lt;a href="http://en.wikipedia.org/wiki/NTFS_junction_point"&gt;Junctions&lt;/a&gt; (hardlink NTFS shortcuts (&lt;a href="http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html"&gt;easy Junction explorer extention&lt;/a&gt;)) if you want to include external folders in the sync. &lt;/li&gt;    &lt;li&gt;No default support for multiple account synchronization. You need to use the portable Dropbox (see information below) if you want to synchronize multiple accounts from the same computer at the same time. &lt;/li&gt;    &lt;li&gt;No option to make Dropbox always request for account password on startup (would be useful for the portable version). &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Personal usage scenario's: &lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Synchronization of my &lt;a href="http://www.roboform.com/pass2go.html"&gt;AI Roboform data&lt;/a&gt; so I have all my login's everywhere. I combine this with the Roboform2go on my USB stick and Dropbox portable to make sure everything is kept in sync. &lt;/li&gt;    &lt;li&gt;Hosting of files for websites. Instead of having to upload them to different free hosts with ads, I can now use the Dropbox space for easy hosting. Even complete websites are usable when hosted within the 'public' folder of a Dropbox account. &lt;/li&gt;    &lt;li&gt;Combination of &lt;a href="http://mytselection.blogspot.com/2009/12/freeotfe-command-line.html"&gt;FreeOTFE&lt;/a&gt; portable to make sure my USB stick portable Dropbox account is kept save. I place all Dropbox files within a FreeOTFE secured file, since else when losing USB stick, anyone could have access to my Dropbox account by just starting up the portable Dropbox application. &lt;/li&gt;    &lt;li&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 10px 10px; width: 290px; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; cursor: hand" border="0" alt="" src="http://cache.gawkerassets.com/assets/images/17/2010/04/340x_utorrentremote.jpg" /&gt;Some other tips and tricks for Dropbox usage from &lt;a href="http://lifehacker.com/5527055/the-cleverest-ways-to-use-dropbox-that-youre-not-using" target="_blank"&gt;LifeHacker&lt;/a&gt;. The 'start torrent from anywhere' trick is nice! &lt;/li&gt;    &lt;li&gt;Since I use my personal &lt;a href="http://www.visualsvn.com/server/"&gt;SVN&lt;/a&gt; I wanted to make a combination of the automatic Dropbox synchronization coupled to the full control SVN synchronization for development projects. By using the Junctions I could link the SVN folders into Dropbox. Now I have an auto sync of files and folders, but I can manually sync with SVN to have an extra backup and history tracking with full control. The downside of this is that all hidden '.svn' folders are kept in sync too within Dropbox and this can take a lot of your Dropbox space. With the selective sync option in Dropbox, you can disable the syncronisation of the .svn folders to save space. But be carefull, when deselecting .svn folders in the Dropbox configuration, it will remove those folders from your local system. So it’s best to first create some dummy empty .svn folders, next disable the sync of these folders and then copy the real .svn folder at the correct location. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Dropbox Portable installation:&lt;/h2&gt;  &lt;p&gt;DropboxPortableAHK is now available. This makes the use of Dropbox Portable much easier. All download/configuration is now automated and very userfriendly. Just download from the developer website: &lt;a title="http://dropportable.ho.am/#english-home" href="http://dropportable.ho.am/#english-home"&gt;http://dropportable.ho.am/#english-home&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Update 09/01/2011: New version of the Dropbox Portable framework (5.3.4). But this new framework requires a relink! The new version has easier update (just copy official Dropbox setup file in the update folder). Cleanup of blog and added extra info on installation.&lt;/p&gt;  &lt;p&gt;Update 20/01/2011: added info from comments to change path in config.db&lt;/p&gt;  &lt;p&gt;Update 03/04/2011: link to new DropboPortableAHK version, no more manual tweaks required.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-7843481392415474143?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/7843481392415474143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/10/dropbox-daily-usage.html#comment-form' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7843481392415474143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7843481392415474143'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/10/dropbox-daily-usage.html' title='Dropbox - daily usage'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-4891596163436925806</id><published>2009-10-11T13:46:00.004+02:00</published><updated>2009-10-12T09:15:30.309+02:00</updated><title type='text'>Keep your batteries in good shape</title><content type='html'>I red a good article on how to keep your batteries in good shape: &lt;a href="http://netto.tijd.be/geld_en_gezin/budget/Zo_gaan_dure_batterijen_langer_mee.8127787-1767.art" title="Dutch" target="_blank"&gt;Dutch&lt;/a&gt;, Babelfish translated &lt;a href="http://babelfish.yahoo.com/translate_url?doit=done&amp;tt=url&amp;intl=1&amp;fr=bf-home&amp;trurl=http%3A%2F%2Fnetto.tijd.be%2Fgeld_en_gezin%2Fbudget%2FZo_gaan_dure_batterijen_langer_mee.8127787-1767.art&amp;lp=nl_en&amp;btnTrUrl=Translate" target="_blank" &gt;English version&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Top tips:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Make sure to recharge long enough before first usage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Always use the original or exactly matching charger&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nickel Cadmium (NiCd) batteries should be completely empty before recharging (a battery memory effect will shorten the battery live)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;These batteries are most often used as AAA or AA rechargeable batteries or older mobile phones&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lithium Ion batteries should never be completely empty before recharging (no battery memory, but very sensitive to higher temperatures while charging)&lt;ul&gt;&lt;li&gt;These batteries are most often used in mobile phones, pda's and notebooks&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It can help to put your batteries in a cool environment when you won't use them for some time.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-4891596163436925806?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/4891596163436925806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/10/keep-your-batteries-in-good-shape.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4891596163436925806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/4891596163436925806'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/10/keep-your-batteries-in-good-shape.html' title='Keep your batteries in good shape'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-6381686375074955082</id><published>2009-10-01T22:03:00.013+02:00</published><updated>2011-07-03T22:51:11.187+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='excel'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Folder structure creator - Excel VBS</title><content type='html'>&lt;p&gt;If you need to create a lot of folders and subfolders, &lt;img style="border-bottom: 0px; border-left: 0px; width: 85px; display: inline; float: right; height: 71px; border-top: 0px; border-right: 0px" border="0" alt="Excel_2007.jpg" src="http://img25.imageshack.us/img25/6509/excel2007.jpg" width="93" height="77" /&gt;with some specific structure, it can be usefull if you can use the power of Excel to make up your folder names and structure. All kind of easy and quick formulas can be used, and once the strucuture is set up, you can easily create the empty folder structure with just one click by using this little VBS macro. The base folder used will depend on the location of the Excel file, so make sure it's saved or copied in the correct folder.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Sub CreateFolderStructure()&lt;br /&gt;'Create folder for all vlues in current sheet&lt;br /&gt;'folders will be created in folder where the excel file was saved&lt;br /&gt;'folders will be created from first row, first column, until empty row is found&lt;br /&gt;'Example expected cell structure: (data starting in current sheet, column A, row 1)&lt;br /&gt;'folder1 subfolder1 subsubfolder1&lt;br /&gt;'folder2&lt;br /&gt;'folder3 subfolder3&lt;br /&gt;'...&lt;br /&gt;'this will result in:&lt;br /&gt;'\folder1\subfolder1\subsubfolder1&lt;br /&gt;'\folder2&lt;br /&gt;'\folder3\subfolder3&lt;br /&gt;'...&lt;br /&gt;Set fs = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;For iRow = 1 To 65000&lt;br /&gt;pathToCreate = ActiveWorkbook.Path&lt;br /&gt;For iColumn = 1 To 65000&lt;br /&gt;currValue = Worksheets(ActiveCell.Worksheet.Name).Cells(iRow, iColumn).Value&lt;br /&gt;If (currValue = "") Then&lt;br /&gt;Exit For&lt;br /&gt;Else&lt;br /&gt;pathToCreate = pathToCreate &amp; "\" &amp; CStr(currValue)&lt;br /&gt;'MsgBox (pathToCreate)&lt;br /&gt;folderToCreate = pathToCreate&lt;br /&gt;If Not (fs.FolderExists(folderToCreate)) Then&lt;br /&gt;fs.CreateFolder (folderToCreate)&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Next&lt;br /&gt;End Sub&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Excel sheet with the macro can be downloaded &lt;a title="DropBox" href="http://dl.dropbox.com/u/2328438/CreateFolderStructure%20Excel%20VBS.xls" target="_blank"&gt;here&lt;/a&gt;. Before running the macro make sure the rows and columns of the active sheet are filled in correctly. Next simply run the macro by using the button.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="foldercreatorexcel1.png" src="http://img25.imageshack.us/img25/4109/foldercreatorexcel1.png" width="289" height="182" /&gt; &lt;img style="border-bottom: 0px; border-left: 0px; width: 371px; height: 153px; border-top: 0px; border-right: 0px" border="0" alt="foldercreatorexcel2.png" src="http://img25.imageshack.us/img25/325/foldercreatorexcel2.png" width="379" height="156" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; width: 278px; height: 275px; border-top: 0px; border-right: 0px" border="0" alt="foldercreatorexcel3.png" src="http://img25.imageshack.us/img25/3731/foldercreatorexcel3.png" width="374" height="358" /&gt; &lt;img style="border-bottom: 0px; border-left: 0px; width: 394px; height: 273px; border-top: 0px; border-right: 0px" border="0" alt="foldercreatorexcel4.png" src="http://img25.imageshack.us/img25/6897/foldercreatorexcel4.png" width="401" height="302" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you created to many empty folders by accident, you can easily remove them again using this little tool: &lt;a title="RED Remove Empty Directories" href="http://www.jonasjohn.de/lab/red.htm" target="_blank"&gt;Remove Empty Directories&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update 13/11/2009: Modified the &lt;a href="http://dl.dropbox.com/u/2328438/CreateFolderStructure%20Excel%20VBS.xls"&gt;Excel VBS script&lt;/a&gt; to let you navigate to the desired base folder upon launching the macro, so the Excel file may now be saved at any location, the base folder will have to be specified upon launching the macro: &lt;br /&gt;&lt;pre class="brush: vb"&gt;Sub CreateFolderStructure()&lt;br /&gt;'Create folder for all vlues in current sheet&lt;br /&gt;'folders will be created in folder where the excel file was saved&lt;br /&gt;'folders will be created from first row, first column, until empty row is found&lt;br /&gt;'Example expected cell structure: (data starting in current sheet, column A, row 1)&lt;br /&gt;'folder1    subfolder1  subsubfolder1&lt;br /&gt;'folder2&lt;br /&gt;'folder3    subfolder3&lt;br /&gt;'...&lt;br /&gt;'this will result in:&lt;br /&gt;'&lt;currentpath&gt;\folder1\subfolder1\subsubfolder1&lt;br /&gt;'&lt;currentpath&gt;\folder2&lt;br /&gt;'&lt;currentpath&gt;\folder3\subfolder3&lt;br /&gt;'...&lt;br /&gt;parentFolder = BrowseForFolder&lt;br /&gt;Do While parentFolder = False&lt;br /&gt;parentFolder = BrowseForFolder&lt;br /&gt;Loop&lt;br /&gt;Set fs = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;For iRow = 1 To 65000&lt;br /&gt;pathToCreate = parentFolder&lt;br /&gt;For iColumn = 1 To 65000&lt;br /&gt;currValue = Worksheets(ActiveCell.Worksheet.Name).Cells(iRow, iColumn).Value&lt;br /&gt;If (currValue = "") Then&lt;br /&gt;Exit For&lt;br /&gt;Else&lt;br /&gt;pathToCreate = pathToCreate &amp; "\" &amp; CStr(currValue)&lt;br /&gt;'MsgBox (pathToCreate)&lt;br /&gt;folderToCreate = pathToCreate&lt;br /&gt;If Not (fs.FolderExists(folderToCreate)) Then&lt;br /&gt;fs.CreateFolder (folderToCreate)&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Next&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Function BrowseForFolder(Optional OpenAt As Variant) As Variant&lt;br /&gt;'Function purpose:  To Browser for a user selected folder.&lt;br /&gt;'If the "OpenAt" path is provided, open the browser at that directory&lt;br /&gt;'NOTE:  If invalid, it will open at the Desktop level&lt;br /&gt;&lt;br /&gt;Dim ShellApp As Object&lt;br /&gt;&lt;br /&gt;'Create a file browser window at the default folder&lt;br /&gt;Set ShellApp = CreateObject("Shell.Application"). _&lt;br /&gt;BrowseForFolder(0, "Please choose a folder", 0, OpenAt)&lt;br /&gt;'Set the folder to that selected.  (On error in case cancelled)&lt;br /&gt;On Error Resume Next&lt;br /&gt;BrowseForFolder = ShellApp.self.Path&lt;br /&gt;On Error GoTo 0&lt;br /&gt;&lt;br /&gt;'Destroy the Shell Application&lt;br /&gt;Set ShellApp = Nothing&lt;br /&gt;&lt;br /&gt;'Check for invalid or non-entries and send to the Invalid error&lt;br /&gt;'handler if found&lt;br /&gt;'Valid selections can begin L: (where L is a letter) or&lt;br /&gt;'\\ (as in \\servername\sharename.  All others are invalid&lt;br /&gt;Select Case Mid(BrowseForFolder, 2, 1)&lt;br /&gt;Case Is = ":"&lt;br /&gt;If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid&lt;br /&gt;Case Is = "\"&lt;br /&gt;If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid&lt;br /&gt;Case Else&lt;br /&gt;GoTo Invalid&lt;br /&gt;End Select&lt;br /&gt;&lt;br /&gt;Exit Function&lt;br /&gt;&lt;br /&gt;Invalid:&lt;br /&gt;'If it was determined that the selection was invalid, set to False&lt;br /&gt;BrowseForFolder = False&lt;br /&gt;&lt;br /&gt;End Function&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-6381686375074955082?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/6381686375074955082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/10/folder-structure-creator-excel-vbs.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6381686375074955082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6381686375074955082'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/10/folder-structure-creator-excel-vbs.html' title='Folder structure creator - Excel VBS'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-6211409439937474260</id><published>2009-09-16T18:06:00.015+02:00</published><updated>2011-02-19T16:49:52.208+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rocker'/><category scheme='http://www.blogger.com/atom/ns#' term='autohotkey'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><category scheme='http://www.blogger.com/atom/ns#' term='navigation'/><title type='text'>Mouse rocker gestures</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_OiMAwW7QI68/SrEUqr0WL2I/AAAAAAAAA6I/Xsw6yfuNYXY/s200/rocker.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="hibernate" border="0" alt="Mouse Rocker" align="right" src="http://4.bp.blogspot.com/_OiMAwW7QI68/SrEUqr0WL2I/AAAAAAAAA6I/Xsw6yfuNYXY/s200/rocker.png" width=85px /&gt;&lt;/a&gt;&lt;br /&gt;Based on the &lt;a href="http://www.autohotkey.com"&gt;AutoHotKey&lt;/a&gt; script from Adam Pash on the &lt;a href="http://lifehacker.com/software/lifehacker-code/rocker-mouse-navigation-tool-windows-257609.php"&gt;Lifehacker site&lt;/a&gt;, I made my own version to fit my personal mouse rocker gesture needs.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Basically, a mouse rocker gesture requires that you press one mouse button, hold it down, then press the other. You can rock across the mouse from right-to-left or left-to-right; each direction you rock gives you a different result. Once you get used to this gesture, the name makes perfect sense, and you'll wonder why you weren't mouse rocking your whole life.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I changed the way the script is configured so one can now easily add process names in the &lt;tt&gt;rocker.ini&lt;/tt&gt; file to change the behaviour for a specific application. And I added extra navigation combinations so one should be able to easily make it fit his own needs.&lt;br /&gt;For example in excel you can now easily switch to the next or previous tabbed sheet using mouse rocker gestures. UltraEdit switching between open files is also supported by sending '&lt;tt&gt;Alt + up&lt;/tt&gt;' or '&lt;tt&gt;Alt + down&lt;/tt&gt;' keys with the mouse rocker gestures. On first run, it will now also ask if you want to start the tool automatically during windows start. The &lt;tt&gt;ini&lt;/tt&gt; file is created on first run in the directory from where the &lt;tt&gt;rocker.exe&lt;/tt&gt; file is launched. The different groups denote the keys that will be send when a mouse rocker gesture is detected, one can easily add or remove any process name to change the behaviour in a specific application.&lt;br /&gt;&lt;blockquote&gt;&lt;tt&gt;[Preferences]&lt;br /&gt;CtrlGroup=itunes.exe&lt;br /&gt;CtrlTabGroup=notepad++.exe,dreamweaver.exe,pidgin.exe&lt;br /&gt;CtrlUpDnGroup=empty&lt;br /&gt;CtrlPgUpDnGroup=excel.exe&lt;br /&gt;AltGroup=firefox.exe,iexplore.exe,opera.exe,feeddemon.exe,explorer.exe&lt;br /&gt;AltUpDnGroup=uedit32.exe&lt;br /&gt;AltPgUpDnGroup=empty&lt;br /&gt;BckspGroup=empty&lt;br /&gt;IgnoreGroup=empty&lt;br /&gt;Startup=1&lt;br /&gt;UpdateCheck=0&lt;br /&gt;Version=0.3&lt;/tt&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;No installation is required, just download the &lt;a href="http://dl.dropbox.com/u/2328438/MouseRocker.zip"&gt;zip file&lt;/a&gt;, extract and run the exe. The AutoHotKey source script is included in the &lt;a href="http://dl.dropbox.com/u/2328438/MouseRocker.zip"&gt;zip file&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Update 19/02/2011: links updated&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-6211409439937474260?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/6211409439937474260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/09/rocker-mouse-gestures.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6211409439937474260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6211409439937474260'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/09/rocker-mouse-gestures.html' title='Mouse rocker gestures'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OiMAwW7QI68/SrEUqr0WL2I/AAAAAAAAA6I/Xsw6yfuNYXY/s72-c/rocker.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-7985894695606615208</id><published>2009-09-16T08:39:00.009+02:00</published><updated>2009-12-04T11:00:31.765+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='jpa'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='criteria'/><category scheme='http://www.blogger.com/atom/ns#' term='join'/><category scheme='http://www.blogger.com/atom/ns#' term='subquery'/><title type='text'>Hibernate subquery join using Criteria</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_OiMAwW7QI68/SrDMrFyBTkI/AAAAAAAAA54/p0tS2TZOieg/s1600-h/hibernate_icon.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="hibernate" border="0" alt="hibernate" align="right" src="http://4.bp.blogspot.com/_OiMAwW7QI68/SrDMrFyBTkI/AAAAAAAAA54/p0tS2TZOieg/s200/hibernate_icon.gif" width="120" /&gt;&lt;/a&gt;&lt;br /&gt;I recently needed to create max query in hibernate returning an object instead of the maximal value of the field and I wanted to do this using &lt;a href="https://www.hibernate.org/hib_docs/v3/api/org/hibernate/Criteria.html"&gt;Hibernate Criteria&lt;/a&gt; in our JPA environment.&lt;br /&gt;A simple example of what I wanted:&lt;br /&gt;&lt;blockquote&gt;&lt;tt&gt;select *&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;from user&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;where userid = (select max(userid)&lt;/tt&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt&gt;from user &lt;/tt&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;tt&gt;where company = 'aCompanyName')&lt;/tt&gt;&lt;/blockquote&gt;&lt;br /&gt;The way to program this in JPA/Hibernate using Criterias, DetachedCriteria and Subqueries. Make sure to use &lt;tt&gt;Subqueries.propertyEq&lt;/tt&gt; instead of &lt;tt&gt;Subqueries.eq&lt;/tt&gt; if you want to join on a field:&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;public User getMaxUserOfCompany(String companyName) {&lt;br /&gt; Session session = (Session) em.getDelegate();&lt;br /&gt; DetachedCriteria subCriteria = DetachedCriteria.forClass(User.class);&lt;br /&gt; subCriteria.add(Restrictions.eq("company", companyName));&lt;br /&gt; subCriteria.setProjection(Projections.max("userid") );&lt;br /&gt; Criteria criteria = session.createCriteria(User.class);&lt;br /&gt; criteria.add(Subqueries.propertyEq("userid", subCriteria));&lt;br /&gt; return (User) criteria.uniqueResult();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-7985894695606615208?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/7985894695606615208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/09/hibernate-subquery-join-using-criteria.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7985894695606615208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7985894695606615208'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/09/hibernate-subquery-join-using-criteria.html' title='Hibernate subquery join using Criteria'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OiMAwW7QI68/SrDMrFyBTkI/AAAAAAAAA54/p0tS2TZOieg/s72-c/hibernate_icon.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-6720242018146072476</id><published>2009-07-02T19:55:00.012+02:00</published><updated>2010-04-18T14:44:46.153+02:00</updated><title type='text'>SpeedTouch ADSL router patch</title><content type='html'>&lt;p&gt;&lt;span style="font-style:italic;"&gt;Below is shown how to flash a SpeedTouch router with a new firmware when the administrator password is &lt;span style="font-weight:bold;"&gt;not known&lt;/span&gt;, and then patch the SpeedTouch 716v5 router to disable the ADSL modem and use it as a standard 3-port lan router, 1 port will be used for incoming internet (wan). The configuration was provided by Thomson.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Recently we had to leave &lt;a href="http://www.tele2.be/nl/allin/"&gt;Tele2&lt;/a&gt; with theire very nice unlimited offering. We joined Telenet because we coulnd't connect but through a coax cable in our new house.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;For Tele2, we had to buy a ADSL modem + router, the Thomson Alcatel SpeedTouch 716v5. It's a very nice router with Wifi and VOIP integrated. Since this router was still working fine, I didn't want to throw it away. But the problem is that Tele2 puts an administrator password on it, and they didn't want to remove the password or provide it to me. To flash a new rom on the router, you also need to have the administrator password.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;I was able to find a method to flash a new rom on the router without having the administrator rights. I flashed &lt;a href="http://dl.dropbox.com/u/2328438/716_Upgrade_R6172_sip.exe"&gt;this&lt;/a&gt; (afterwards I used &lt;a href="http://dl.dropbox.com/u/2328438/716_Upgrade_R62T2_sip.exe" target="_blank"&gt;6.2.29.2&lt;/a&gt;) rom onto it:&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;-connect your computer with a lan cable to the SpeedTouch router&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;-assign a static ip to your network card, you can just copy the settings you got when you received an IP from the DHCP&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;-start the flashing by executing the upgrade file&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;-when the upgrade requests for the router password, use a small screwdriver to push the reset button and keep this reset button pressed. In the meantime power off the SpeedTouch and power it on again. Keep on pressing the reset button and wait for 10 - 15 seconds. The power led will blink red, now you can release the reset button.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;-Quickly press back on the upgrade flasher, the software will search again for the SpeedTouch device and continue the upgrade without requesting the administrator password.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;I had to do it over some times before all went right, but at the end I managed to flash the default SpeedTouch716v5 rom v 6.1.7.2 and afterwards v6.2.29.2&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Once the default rom is installed, you will have Administrator rights by logging in using: username Administrator and emtpy password.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Next, I configured the router to not use ADSL modem anymore, but use the 4th lan port as incoming internet connection and distribute the internet over Wifi and the remaining 3 lan ports with the build in DHCP server. The commands must be put in using telnet: Start -&gt; Run -&gt; cmd -&gt; telnet, login with user Administrator and password (empty by default).&lt;br /&gt;&lt;pre class="brush: php"&gt;&lt;br /&gt;:ppp relay flush&lt;br /&gt;:ppp flush&lt;br /&gt;:eth flush&lt;br /&gt;:atm flush&lt;br /&gt;:atm phonebook flush&lt;br /&gt;:eth bridge ifdelete intf=ethport4&lt;br /&gt;:eth ifadd intf=eth_wan&lt;br /&gt;:eth ifconfig intf=eth_wan dest=ethif4&lt;br /&gt;:eth ifattach intf=eth_wan&lt;br /&gt;:ip ifadd intf=ip_wan_eth dest=eth_wan&lt;br /&gt;:ip ifconfig intf=ip_wan_eth status=up&lt;br /&gt;:ip ifattach intf=ip_wan_eth&lt;br /&gt;:nat ifconfig intf=ip_wan_eth translation=enabled&lt;br /&gt;:dhcp client ifadd intf=ip_wan_eth&lt;br /&gt;:dhcp client ifconfig intf=ip_wan_eth metric=5 dnsmetric=5&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=dhcp-lease-time&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=dhcp-renewal-time&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=dhcp-rebinding-time&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=subnet-mask&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=classless-static-routes&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=default-routers&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=classfull-static-routes&lt;br /&gt;:dhcp client rqoptions add intf=ip_wan_eth option=domain-name-servers&lt;br /&gt;:dhcp client ifattach intf=ip_wan_eth&lt;br /&gt;:saveall&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br/&gt;&lt;br /&gt;You can now connect your incoming internet connection on LAN port 4 and the internet will be distributed over the other LAN ports and Wifi. I tested this method with rom version 6.2. But then the internet was only distributed over the 3 remaining LAN ports, and not over the WIFI connections.&lt;br /&gt;Update 18/04/2010: working with &lt;a href="http://dl.dropbox.com/u/2328438/716_Upgrade_R62T2_sip.exe" target="_blank"&gt;6.2.29.2&lt;/a&gt;.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Finaly, I configured VOIP. I find out &lt;a href="http://weepeetelecom.eu/"&gt;Weepee&lt;/a&gt; was very cheap and working very well so far. They have a very fast email support. To get a Weepee fixed line telephone number it costs 9 euros. One time fee! You can chose to receive a new number or transfer your existing fixed number, either way it will cost only 9euros. After this one time cost, you only have to pay for the calls you make, and the &lt;a href="http://weepeetelecom.eu/tarieven/"&gt;rates&lt;/a&gt; are very competitive.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;To configure Weepee VOIP on my SpeedTouch, I used these VOIP settings:&lt;br /&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;SIP URI: SIP username provided by Weepee (12 numbers, starting with 32)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Username: SIP username provided by Weepee (12 numbers, starting with 32)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Password: SIP password provided by Weepee&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Displayname: SIP username provided by Weepee&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Abbreviated number: SIP username provided by Weepee&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Port: Phone 1&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Expert VOIP configuration:&lt;br /&gt;&lt;br/&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;Registrar: SIP server provided by Weepee, ssw7.weepee.org&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Registrar Port: 5060&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Proxy: SIP server provided by Weepee, ssw7.weepee.org&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Proxy prot: 5060&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Expire time: 3600&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;br/&gt;&lt;br /&gt;That should do the trick. I hope someone else can benefit from it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="TEXT-DECORATION: underline"&gt;Update: 8/11/2009&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;WeePee now has native support for Skype over VOIP. You can be called and make calls for free over Skype. To make it work you'll need to follow these steps:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;- Login into WeePee client configuration panel: &lt;a href="https://ssl.weepee.org/klanten/flash"&gt;https://ssl.weepee.org/klanten/flash&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;- Go to 'Information' -&amp;gt; 'Skype'. As mentioned on this page, you need a &lt;a href="http://www.skype.com/intl/en/business/products/business-control-panel/" target="_blank" title="Skype Business Account"&gt;Skype Business Account&lt;/a&gt;. You'll need to create a new account through the Skype Business Account User management panel using the Skype button 'Create a business account'. (It doesn't work by registering an existing account into Skype Business)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;- When the Skype business account is created, you'll need to login once using Skype normally. This way, you'll be able to add your contacts into this account too.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;- Now you can provided the Skype username and password of the Skype Business Account into WeePee client configuration panel. Click on the 'Create' button to connect Skype into Weepee. Your status should change to 'Online'.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;- To make calls over Skype through WeePee, click on the tab menu 'Short numbers' within the WeePee client configuration panel. For each of your Skype contacts, add a shortcode by adding the 'skype#&amp;lt;skypeusername&amp;gt;' for each shortcode. No you can call your Skype contacts by calling for example '25' from your phone.&lt;/p&gt;&lt;br /&gt;Update 09/04/2010: new link for speedtouch rom&lt;br /&gt;&lt;br /&gt;Update 18/04/2010: new rom version &lt;a href="http://dl.dropbox.com/u/2328438/716_Upgrade_R62T2_sip.exe" target="_blank"&gt;6.2.29.2&lt;/a&gt; which works with the specific lan configuration&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-6720242018146072476?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/6720242018146072476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/07/speedtouch-adsl-router-patch.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6720242018146072476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/6720242018146072476'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/07/speedtouch-adsl-router-patch.html' title='SpeedTouch ADSL router patch'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-2586615853935530323</id><published>2009-05-24T15:58:00.010+02:00</published><updated>2010-01-15T09:47:50.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='cobol'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='convertor'/><title type='text'>Cobol data + Cobol copybook + Java conversion</title><content type='html'>&lt;p&gt;Although I'm absolutely not a fan of Cobol, it's still inevitable in the Finance IT development sector.    &lt;br /&gt;    &lt;br /&gt;Lately, we needed a way to let Cobol and Java data work together, and we didn't want to hard code the complete data structure. To make this possible we noticed different non-free applications exist, but the open source project &lt;a href="http://cb2xml.sourceforge.net/"&gt;Cb2Xml&lt;/a&gt; got our attention. &lt;/p&gt;  &lt;p&gt;This project already worked out some Java code to parse a Cobol copybook and convert it into an XML representation. (The copybook can be seen as the interface of the Cobol data). But this project was mend to import and export data from xml to Cobol stream and vice-versa, while we needed some Java objects to work with the received Cobol data input. &lt;/p&gt;  &lt;p&gt;So I added some extra code to convert a Cobol data stream (String) into a Java object (using a Hashtable internally). Now, it's possible to provide a String of Cobol data and its interface definition (Cobol copybook file) and return a Java &lt;span&gt;CobolElements&lt;/span&gt; object. One can search in this &lt;span&gt;CobolElements&lt;/span&gt; object based on the name or xpath. I made a simple example to test, which might make it clear how to use the code. &lt;/p&gt;  &lt;p&gt;A simple example of Cobol copybook used as data interface: &lt;/p&gt;  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; 01 ACCOUNT-GROUP                                               .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;  02 ACCOUNT                                              .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;   03 DFND                                 &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(4)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;   03 DCTB                                                       .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    04 DUPD                                &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(8)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    04 DNUMCTB                                                   .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DCTB-12                            &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(12)            .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DCTB-04                            &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(4)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DFMT                               &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(2)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    04 DCDRCTB                                                   .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DRGOCDRCTB                         &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(1)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DROFCMCCDRCTB                      &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(3)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;     05 DBRACMCCDRCTB                                            .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;      06 DBRACMCCDRCTB                     &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(6)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;      06 GBRACDRCTB                                               &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;             &lt;span style="color: #0000ff"&gt;REDEFINES&lt;/span&gt; DBRACMCCDRCTB                             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;       07 DROFCDRCTB                       &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(3)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;       07 DBRACDRCTB                       &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(3)             .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    04 DBLK                                &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(2)              &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;             &lt;span style="color: #0000ff"&gt;OCCURS&lt;/span&gt; 5                                            .&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;    04 DBLK2                               &lt;span style="color: #0000ff"&gt;PIC&lt;/span&gt;  9(3)              &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;             &lt;span style="color: #0000ff"&gt;OCCURS&lt;/span&gt; 5                                            .&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The data that should match this copybook: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;input = &amp;quot;&lt;span style="color: #8b0000"&gt;00000000000039300022955600000123703602231122334455111222333444555&lt;/span&gt;&amp;quot;; &lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Converting the data to a Java CobolElements object:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Converting the copybook to an xml representation (this XML Document should be created once for each copybook and can be cached): &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;Document cb2doc = Cb2Xml.convert(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; File(_cobolCopybookFileName), _debug); &lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Converting the Cobol data stream (&lt;tt&gt;input&lt;/tt&gt; string) to it's matching Java representation: &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;CobolElements cobolElements = Dat2Java.convertWithDoc(input, cb2doc); &lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Retrieving data from the CobolElements object: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;CobolElement childElement = cobolElements.retrieveChildElement(&amp;quot;&lt;span style="color: #8b0000"&gt;GOUTCTT-CSISEQ/GANSCTT-CSISEQ/GCTB/GNUMCTB/NCTB-12&lt;/span&gt;&amp;quot;); &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;System.out.println(childElement.getData()); &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;//returns: 393000229556 &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;childElement = cobolElements.retrieveChildElement(&amp;quot;&lt;span style="color: #8b0000"&gt;ACCOUNT-GROUP/ACCOUNT/DCTB/DBLK[3]&lt;/span&gt;&amp;quot;); &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;System.out.println(childElement.getData()); &lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #008000"&gt;//returns: 44 &lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a title="Source + jar + exmamples" href="http://rapidshare.com/files/280739312/cb2xml.zip.html"&gt;Download source and jar (zip 1,78MB) (link updated 16/09/2009)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;Update (27/11/2009): After creating the cobol2java, we found another interesting open source project called &lt;a href="http://www.legsem.com/legstar/"&gt;LegStar&lt;/a&gt;. They have a completely worked out solution, while the code we use is quite basic and only usable with simple copy books...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-2586615853935530323?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/2586615853935530323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/05/cobol-java.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2586615853935530323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2586615853935530323'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/05/cobol-java.html' title='Cobol data + Cobol copybook + Java conversion'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-7169400249768544471</id><published>2009-05-24T14:31:00.001+02:00</published><updated>2009-05-24T14:38:35.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='bat'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>Eclipse project</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_OiMAwW7QI68/Shk_yYdCijI/AAAAAAAAA4U/bp9J-5rA_CI/s1600-h/eclipse%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="eclipse" border="0" alt="eclipse" align="right" src="http://lh3.ggpht.com/_OiMAwW7QI68/Shk_y74WbsI/AAAAAAAAA4Y/1ShmAVTcYw8/eclipse_thumb%5B2%5D.png?imgmax=800" width="171" height="91" /&gt;&lt;/a&gt; Each project (workspace) in &lt;a title="Eclipse IDE" href="http://www.eclipse.org" target="_blank"&gt;Eclipse&lt;/a&gt; has it's own &lt;font size="2" face="Courier New"&gt;.project&lt;/font&gt; file. To easily open the correct workspace with Eclipse, I wrote a little batch script that can be associated in Windows with the .project files. Now, I only have to double click the &lt;font size="2" face="Courier New"&gt;.project&lt;/font&gt; file and Eclipse will be loaded in the correct workspace.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Save the batch script bellow and make sure the correct &lt;font size="2" face="Courier New"&gt;Eclipse.exe&lt;/font&gt; file is used. You might want to change the Eclipse options if required. &lt;/li&gt;    &lt;li&gt;Double click on a &lt;font size="2" face="Courier New"&gt;.project&lt;/font&gt; file, the first time Windows will ask how to open this file. Choose the &lt;font size="2" face="Courier New"&gt;.bat&lt;/font&gt; batch file script to open your &lt;font size="2" face="Courier New"&gt;.project&lt;/font&gt; file and make sure to make Windows remembers this option. &lt;/li&gt;    &lt;li&gt;Eclipse will now open with the correct workspace loaded. &lt;/li&gt; &lt;/ul&gt;  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;@echo off&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; ECLIPSE_BIN=R:\tools\eclipse\eclipse.exe&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; ECLIPSE_OPTIONS=-refresh -showlocation -Xmx512M -XX:MaxPermSize=512m&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; PROJECT_FULL_PATH=%1%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; PROJECT_FOLDER=%PROJECT_FULL_PATH:.project=%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;cd %PROJECT_FOLDER%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;cd ..&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; PROJECT_WORKSPACE=&amp;quot;&lt;span style="color: #8b0000"&gt;%CD%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;start &amp;quot;&lt;span style="color: #8b0000"&gt;eclipse&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%ECLIPSE_BIN%&lt;/span&gt;&amp;quot; %ECLIPSE_OPTIONS% -data %PROJECT_WORKSPACE%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;@echo &lt;span style="color: #0000ff"&gt;on&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://rapidshare.com/files/236678858/Eclipse_project.bat.html" target="_blank"&gt;Download batch script.&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-7169400249768544471?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/7169400249768544471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/05/eclipse-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7169400249768544471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/7169400249768544471'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/05/eclipse-project.html' title='Eclipse project'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_OiMAwW7QI68/Shk_y74WbsI/AAAAAAAAA4Y/1ShmAVTcYw8/s72-c/eclipse_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-5050281752966394978</id><published>2009-05-11T22:47:00.004+02:00</published><updated>2009-05-12T00:44:16.970+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='log'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='tail'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><title type='text'>LogExpert - Windows tail freeware</title><content type='html'>Today I tested yet another Windows tail application, &lt;a href="http://www.log-expert.de/"&gt;LogExpert&lt;/a&gt;, and I was very amazed with its features!   &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_OiMAwW7QI68/SgiPVrkr-XI/AAAAAAAAA4M/CDdpJW5cAqs/s1600-h/logexpertshowcard.gif"&gt;&lt;img style="border-right-width: 0px; margin: 0pt 10px 10px 0pt; width: 300px; float: left; border-top-width: 0px; border-bottom-width: 0px; height: 268px; border-left-width: 0px; cursor: pointer" id="BLOGGER_PHOTO_ID_5334671361256978802" border="0" alt="" src="http://4.bp.blogspot.com/_OiMAwW7QI68/SgiPVrkr-XI/AAAAAAAAA4M/CDdpJW5cAqs/s320/logexpertshowcard.gif" /&gt;&lt;/a&gt;It has most of the features I'm used to work with in &lt;a href="http://mytselection.blogspot.com/2009/03/baretail-easy-scripted-usage.html"&gt;BareTail&lt;/a&gt; Pro, like adding some filters (regex) or highlighting lines matching some text. And unlike &lt;a href="http://mytselection.blogspot.com/2009/03/winlogtail-freeware-log-viewer-monitor.html"&gt;WinLogTail&lt;/a&gt;, it does support opening multiple files at one with a tabbed interface as in BareTail.   &lt;br /&gt;Besides all this, I really appreciate the following functions:   &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;run some specified application and providing some information of the selected line. This way, one can easily open the tailed file within UltraEdit on the selected line. &lt;/li&gt;    &lt;li&gt;parse the timestamps of a log file and show these in separated columns &lt;/li&gt;    &lt;li&gt;freeze some columns to make these alway be shown and only scrolling other columns (horizontal scrolling) &lt;/li&gt;    &lt;li&gt;advanced filtering with possibility to show some lines before or after the line matching your filter &lt;/li&gt;    &lt;li&gt;activate an 'edit' mode to easily copy some parts of a line &lt;/li&gt;    &lt;li&gt;add some bookmarks and comments on a line to easily find these back afterwards &lt;/li&gt;    &lt;li&gt;support for multifiles (show files as app.log, app.log1, app.log2, etc as one big file) &lt;/li&gt;    &lt;li&gt;support for different files provided on the command line while opening, so &lt;a href="http://mytselection.blogspot.com/2009/03/baretail-easy-scripted-usage.html"&gt;the scripts we used&lt;/a&gt; to open many files with BareTail also work with LogExpert (but opening many files from shared drives is not as lighting fast as with BareTail)       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So, compared to BareTail it has many benefits and it's completely free! But one should know, it's not always as fast and stable as BareTail, but so far it worked very well for me.&lt;/p&gt;  &lt;p&gt;Some nice screenshots (but those only show a small subset of all it's features):&lt;/p&gt;  &lt;p&gt;&lt;a title="screenshots" href="http://www.log-expert.de/screenshots.html" target="_blank"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://www.log-expert.de/images/stories/logexpert_screen1.png" width="713" height="594" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.log-expert.de/images/stories/logexpert_screen2.png" width="712" height="583" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-5050281752966394978?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/5050281752966394978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/05/logexpert-windows-tail-freeware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5050281752966394978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/5050281752966394978'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/05/logexpert-windows-tail-freeware.html' title='LogExpert - Windows tail freeware'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_OiMAwW7QI68/SgiPVrkr-XI/AAAAAAAAA4M/CDdpJW5cAqs/s72-c/logexpertshowcard.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-9056088167736492830</id><published>2009-04-26T19:45:00.001+02:00</published><updated>2009-05-13T15:14:56.192+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Find-Replace text in files from command line</title><content type='html'>&lt;p&gt;In Linux one can easily find and replace some text in files by using the &lt;a title="SED Stream EDitor" href="http://linux.about.com/od/commands/l/blcmdl1_sed.htm" target="_blank"&gt;&lt;font size="2" face="Courier New"&gt;sed&lt;/font&gt;&lt;/a&gt; application. In Windows, I couldn’t find a decent build in equivalent. I ended by using the ported version of &lt;a title="sed for Windows" href="http://gnuwin32.sourceforge.net/packages/sed.htm" target="_blank"&gt;&lt;font size="2" face="Courier New"&gt;sed&lt;/font&gt; for Windows&lt;/a&gt;. I works quite well using the same syntax and doesn’t require to be installed. Just make sure &lt;font size="2" face="Courier New"&gt;&lt;a title="sed for Windows v4.1.5" href="http://rapidshare.com/files/226031989/sedForWindows4.1.5.zip.html" target="_blank"&gt;sed.exe, libiconv2.dll and libintl3.dll&lt;/a&gt;&lt;/font&gt;&lt;font size="2" face="Courier New"&gt;&lt;/font&gt; are existing in the same folder or on the classpath.&lt;/p&gt;  &lt;p&gt;One should know any file altered by &lt;font size="2" face="Courier New"&gt;sed&lt;/font&gt; for Windows will result in this file being also converted from Windows line ending (using 2 characters: Carriage Return + Line Feed) to Linux line endings (only 1 character: Line Feed). This can sometime give some strange results. To overcome this, one should make sure the last replacement in the file is set to replace the Line Feeds back to Carriage Return + Line Feed:&lt;/p&gt;  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;sed -i &amp;quot;&lt;span style="color: #8b0000"&gt;s/$/\r/&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%DIR%\file.txt&lt;/span&gt;&amp;quot;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Some other useful &lt;font size="2" face="Courier New"&gt;sed&lt;/font&gt; commands are available from &lt;a title="sed 1liners" href="http://sed.sourceforge.net/sed1line.txt" target="_blank"&gt;sed sourcefourge&lt;/a&gt;:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;FILE SPACING:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# double space a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed G&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# double space a file which already has blank lines in it. Output file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# should contain no more than one blank line between lines of text.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^$/d;G'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# triple space a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 'G;G'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# undo double-spacing (assumes even-numbered lines are always blank)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 'n;d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# insert a blank line above every line which matches &amp;quot;regex&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/regex/{x;&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;x;}'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# insert a blank line below every line which matches &amp;quot;regex&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/regex/G'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# insert a blank line above and below every line which matches &amp;quot;regex&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/regex/{x;&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;x;G;}'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;NUMBERING:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# number each line of a file (simple left alignment). Using a tab (see&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# note on '\t' at end of file) instead of space will preserve margins.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed = filename | sed 'N;s/\n/\t/'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# number each line of a file (number on left, right-aligned)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed = filename | sed 'N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# number each line of file, but only print numbers if line is not blank&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/./=' filename | sed '/./N; s/\n/ /'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# count lines (emulates &amp;quot;wc -l&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '$='&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;TEXT CONVERSION AND SUBSTITUTION:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/.$//'               &lt;span style="color: #008000"&gt;# assumes that all lines end with CR/LF&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^M$//'              &lt;span style="color: #008000"&gt;# in bash/tcsh, press Ctrl-V then Ctrl-M&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/\x0D$//'            &lt;span style="color: #008000"&gt;# works on ssed, gsed 3.02.80 or higher&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/$/`echo -e \\\r`/&lt;/span&gt;&amp;quot;            &lt;span style="color: #008000"&gt;# command line under ksh&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/$'&amp;quot;&lt;span style="color: #8b0000"&gt;/`echo \\\r`/&lt;/span&gt;&amp;quot;             &lt;span style="color: #008000"&gt;# command line under bash&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/$/`echo \\\r`/&lt;/span&gt;&amp;quot;               &lt;span style="color: #008000"&gt;# command line under zsh&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/$/\r/'                        &lt;span style="color: #008000"&gt;# gsed 3.02.80 or higher&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/$//&lt;/span&gt;&amp;quot;                          &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n &lt;span style="color: #00008b"&gt;p&lt;/span&gt;                             &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# Can only be done with UnxUtils sed, version 4.0.7 or higher. The&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# UnxUtils version can be identified by the custom &amp;quot;--text&amp;quot; switch&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# which appears when you use the &amp;quot;--help&amp;quot; switch. Otherwise, changing&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# DOS newlines to Unix newlines cannot be done with sed in a DOS&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# environment. Use &amp;quot;tr&amp;quot; instead.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/\r//&lt;/span&gt;&amp;quot; infile &amp;gt;outfile         &lt;span style="color: #008000"&gt;# UnxUtils sed v4.0.7 or higher&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; tr -d \r &amp;lt;infile &amp;gt;outfile            &lt;span style="color: #008000"&gt;# GNU tr version 1.22 or higher&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete leading whitespace (spaces, tabs) from front of each line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# aligns all text flush left&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^[ \t]*//'                    &lt;span style="color: #008000"&gt;# see note on '\t' at end of file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete trailing whitespace (spaces, tabs) from end of each line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/[ \t]*$//'                    &lt;span style="color: #008000"&gt;# see note on '\t' at end of file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete BOTH leading and trailing whitespace from each line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^[ \t]*//;s/[ \t]*$//'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# insert 5 blank spaces at beginning of each line (make page offset)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^/     /'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# align all text flush right on a 79-column width&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e 's/^.\{1,78\}$/ &amp;amp;/;ta'  &lt;span style="color: #008000"&gt;# set at 78 plus 1 space&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# center all text in the middle of 79-column width. In method 1,&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# spaces at the beginning of the line are significant, and trailing&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# spaces are appended at the end of the line. In method 2, spaces at&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# the beginning of the line are discarded in centering the line, and&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# no trailing spaces appear at the end of lines.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed  -e :a -e 's/^.\{1,77\}$/ &amp;amp; /;ta'                     &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed  -e :a -e 's/^.\{1,77\}$/ &amp;amp;/;ta' -e 's/\( *\)\1/\1/'  &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# substitute (find and replace) &amp;quot;foo&amp;quot; with &amp;quot;bar&amp;quot; on each line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/foo/bar/'             &lt;span style="color: #008000"&gt;# replaces only 1st instance in a line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/foo/bar/4'            &lt;span style="color: #008000"&gt;# replaces only 4th instance in a line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/foo/bar/g'            &lt;span style="color: #008000"&gt;# replaces ALL instances in a line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' &lt;span style="color: #008000"&gt;# replace the next-to-last case&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/\(.*\)foo/\1bar/'            &lt;span style="color: #008000"&gt;# replace only the last case&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# substitute &amp;quot;foo&amp;quot; with &amp;quot;bar&amp;quot; ONLY for lines which contain &amp;quot;baz&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/baz/s/foo/bar/g'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# substitute &amp;quot;foo&amp;quot; with &amp;quot;bar&amp;quot; EXCEPT for lines which contain &amp;quot;baz&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/baz/!s/foo/bar/g'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# change &amp;quot;scarlet&amp;quot; or &amp;quot;ruby&amp;quot; or &amp;quot;puce&amp;quot; to &amp;quot;red&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'   &lt;span style="color: #008000"&gt;# most seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed 's/scarlet\|ruby\|puce/red/g'                &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# reverse order of lines (emulates &amp;quot;tac&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# bug/feature in HHsed v1.5 causes blank lines to be deleted&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '1!G;h;$!d'               &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '1!G;h;$&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'             &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# reverse each character on the line (emulates &amp;quot;rev&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/\n/!G;s/\(.\)\(.*\n\)/&amp;amp;\2\1/;//D;s/.//'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# join pairs of lines side-by-side (like &amp;quot;paste&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$!N;s/\n/ /'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# if a line ends with a backslash, append the next line to it&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '/\\$/N; s/\\\n//; ta'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# if a line begins with an equal sign, append it to the previous line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# and replace the &amp;quot;=&amp;quot; with a single space&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# add commas to numeric strings, changing &amp;quot;1234567&amp;quot; to &amp;quot;1,234,567&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed ':a;s/\B[0-9]\{3\}\&amp;gt;/,&amp;amp;/;ta'                     &lt;span style="color: #008000"&gt;# GNU sed&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  &lt;span style="color: #008000"&gt;# other seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# add commas to numbers with decimal points and minus signs (GNU sed)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# add a blank line every 5 lines (after lines 5, 10, 15, 20, etc.)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed '0~5G'                  &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 'n;n;n;n;G;'             &lt;span style="color: #008000"&gt;# other seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;SELECTIVE PRINTING OF CERTAIN LINES:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print first 10 lines of file (emulates behavior of &amp;quot;head&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 10q&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print first line of file (emulates &amp;quot;head -1&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed q&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the last 10 lines of a file (emulates &amp;quot;tail&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '$q;N;11,$D;ba'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the last 2 lines of a file (emulates &amp;quot;tail -2&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$!N;$!D'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the last line of a file (emulates &amp;quot;tail -1&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$!d'                    &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '$&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'                  &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the next-to-the-last line of a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '$!{h;d;}' -e x              &lt;span style="color: #008000"&gt;# for 1-line files, print blank line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '1{$q;}' -e '$!{h;d;}' -e x  &lt;span style="color: #008000"&gt;# for 1-line files, print the line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '1{$d;}' -e '$!{h;d;}' -e x  &lt;span style="color: #008000"&gt;# for 1-line files, print nothing&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print only lines which match regular expression (emulates &amp;quot;grep&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/regexp/&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'           &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/regexp/!d'             &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print only lines which do NOT match regexp (emulates &amp;quot;grep -v&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/regexp/!&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'          &lt;span style="color: #008000"&gt;# method 1, corresponds to above&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/regexp/d'              &lt;span style="color: #008000"&gt;# method 2, simpler syntax&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the line immediately before a regexp, but not the line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# containing the regexp&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/regexp/{g;1!&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;};h'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print the line immediately after a regexp, but not the line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# containing the regexp&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/regexp/{n;&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;}'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print 1 line of context before and after regexp, with line number&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# indicating where the regexp occurred (similar to &amp;quot;grep -A1 -B1&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n -e '/regexp/{=;x;1!&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;g;$!N;&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;D;}' -e h&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# grep for AAA and BBB and CCC (in any order)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/AAA/!d; /BBB/!d; /CCC/!d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# grep for AAA and BBB and CCC (in that order)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/AAA.*BBB.*CCC/!d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# grep for AAA or BBB or CCC (emulates &amp;quot;egrep&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d    &lt;span style="color: #008000"&gt;# most seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed '/AAA\|BBB\|CCC/!d'                        &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print paragraph if it contains AAA (blank lines separate paragraphs)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts below&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print paragraph if it contains AAA and BBB and CCC (in any order)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;/BBB/!d;/CCC/!d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print paragraph if it contains AAA or BBB or CCC&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e '/./{H;$!d;}' -e 'x;/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed '/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d'         &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print only lines of 65 characters or longer&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/^.\{65\}/&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print only lines of less than 65 characters&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/^.\{65\}/!&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'        &lt;span style="color: #008000"&gt;# method 1, corresponds to above&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^.\{65\}/d'            &lt;span style="color: #008000"&gt;# method 2, simpler syntax&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print section of file from regular expression to end of file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/regexp/,$&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print section of file based on line numbers (lines 8-12, inclusive)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '8,12&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'               &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '8,12!d'                 &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print line number 52&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '52&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'                 &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '52!d'                   &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '52q;d'                  &lt;span style="color: #008000"&gt;# method 3, efficient on large files&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# beginning at line 3, print every 7th line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed -n '3~7&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'               &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '3,${&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;n;n;n;n;n;n;}' &lt;span style="color: #008000"&gt;# other seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print section of file between two regular expressions (inclusive)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/Iowa/,/Montana/&lt;span style="color: #00008b"&gt;p&lt;/span&gt;'             &lt;span style="color: #008000"&gt;# case sensitive&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;SELECTIVE DELETION OF CERTAIN LINES:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# print all of file EXCEPT section between 2 regular expressions&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/Iowa/,/Montana/d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete duplicate, consecutive lines from a file (emulates &amp;quot;uniq&amp;quot;).&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# First line in a set of duplicate lines is kept, rest are deleted.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$!N; /^\(.*\)\n\1$/!P; D'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete duplicate, nonconsecutive lines from a file. Beware not to&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# overflow the buffer size of the hold space, or else use GNU sed.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n 'G; s/\n/&amp;amp;&amp;amp;/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete all lines except duplicate lines (emulates &amp;quot;uniq -d&amp;quot;).&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete the first 10 lines of a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '1,10d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete the last line of a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '$d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete the last 2 lines of a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 'N;$!P;$!D;$d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete the last 10 lines of a file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '$d;N;2,10ba' -e 'P;D'   &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n -e :a -e '1,10!{P;N;D;};N;ba'  &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete every 8th line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed '0~8d'                           &lt;span style="color: #008000"&gt;# GNU sed only&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 'n;n;n;n;n;n;n;d;'                &lt;span style="color: #008000"&gt;# other seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete lines matching pattern&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/pattern/d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete ALL blank lines from a file (same as &amp;quot;grep '.' &amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^$/d'                           &lt;span style="color: #008000"&gt;# method 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/./!d'                           &lt;span style="color: #008000"&gt;# method 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete all CONSECUTIVE blank lines from file except the first; also&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# deletes all blank lines from top and end of file (emulates &amp;quot;cat -s&amp;quot;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/./,/^$/!d'          &lt;span style="color: #008000"&gt;# method 1, allows 0 blanks at top, 1 at EOF&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^$/N;/\n$/D'        &lt;span style="color: #008000"&gt;# method 2, allows 1 blank at top, 0 at EOF&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete all CONSECUTIVE blank lines from file except the first 2:&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^$/N;/\n$/N;//D'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete all leading blank lines at top of file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/./,$!d'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete all trailing blank lines at end of file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'  &lt;span style="color: #008000"&gt;# works on all seds&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e '/^\n*$/N;/\n$/ba'        &lt;span style="color: #008000"&gt;# ditto, except for gsed 3.02.*&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete the last line of each paragraph&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -n '/^$/{&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;h;};/./{x;/./&lt;span style="color: #00008b"&gt;p&lt;/span&gt;;}'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;SPECIAL APPLICATIONS:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# remove nroff overstrikes (char, backspace) from man pages. The 'echo'&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# command may need an -e switch if you use Unix System V or bash shell.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/.`echo \\\b`//g&lt;/span&gt;&amp;quot;    &lt;span style="color: #008000"&gt;# double quotes required for Unix environment&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/.^H//g'             &lt;span style="color: #008000"&gt;# in bash/tcsh, press Ctrl-V and then Ctrl-H&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/.\x08//g'           &lt;span style="color: #008000"&gt;# hex expression for sed 1.5, GNU sed, ssed&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# get Usenet/e-mail message header&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^$/q'                &lt;span style="color: #008000"&gt;# deletes everything after first blank line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# get Usenet/e-mail message body&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '1,/^$/d'              &lt;span style="color: #008000"&gt;# deletes everything up to first blank line&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# get Subject header, but remove initial &amp;quot;Subject: &amp;quot; portion&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^Subject: */!d; s///;q'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# get return address header&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^Reply-To:/q; /^From:/h; /./d;g;q'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# parse out the address proper. Pulls out the e-mail address by itself&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# from the 1-line return address header (see preceding script)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/ *(.*)//; s/&amp;gt;.*//; s/.*[:&amp;lt;] *//'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# add a leading angle bracket and space to each line (quote a message)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^/&amp;gt; /'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# delete leading angle bracket &amp;amp; space from each line (unquote a message)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed 's/^&amp;gt; //'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# remove most HTML tags (accommodates multiple-line tags)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed -e :a -e 's/&amp;lt;[^&amp;gt;]*&amp;gt;//g;/&amp;lt;/N;//ba'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# extract multi-part uuencoded binaries, removing extraneous header&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# info, so that only the uuencoded portion remains. Files passed to&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# sed must be passed in the proper order. Version 1 can be entered&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# from the command line; version 2 can be made into an executable&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# Unix shell script. (Modified from a script by Rahul Dhesi.)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;/,/^&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;/d' file1 file2 ... fileX | uudecode   &lt;span style="color: #008000"&gt;# vers. 1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/^&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;/,/^&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;/d' &amp;quot;&lt;span style="color: #8b0000"&gt;$@&lt;/span&gt;&amp;quot; | uudecode                    &lt;span style="color: #008000"&gt;# vers. 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# sort paragraphs of file alphabetically. Paragraphs are separated by blank&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# lines. GNU sed uses \v for vertical tab, or any unique char will do.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; sed '/./{H;d;};x;s/\n/={NL}=/g' file | sort | sed '1s/={NL}=//;s/={NL}=/\n/g'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; gsed '/./{H;d};x;y/\n/\v/' file | sort | sed '1s/\v//;y/\v/\n/'&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# zip up each .TXT file individually, deleting the source file and&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# setting the name of each .ZIP file to the basename of the .TXT file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; &lt;span style="color: #008000"&gt;# (under DOS: the &amp;quot;dir /b&amp;quot; switch returns bare filenames in all caps).&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; echo @echo off &amp;gt;zipup.bat&lt;br /&gt;&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 10px"&gt; dir /b *.txt | sed &amp;quot;&lt;span style="color: #8b0000"&gt;s/^\(.*\)\.TXT/pkzip -mo \1 \1.TXT/&lt;/span&gt;&amp;quot; &amp;gt;&amp;gt;zipup.bat&lt;/pre&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-9056088167736492830?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/9056088167736492830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/04/find-replace-text-in-files-from-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/9056088167736492830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/9056088167736492830'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/04/find-replace-text-in-files-from-command.html' title='Find-Replace text in files from command line'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-2043872752624895893</id><published>2009-04-26T12:10:00.001+02:00</published><updated>2009-04-26T12:10:54.740+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='bat'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>End (kill) some application from command line</title><content type='html'>&lt;p&gt;Different methods exist in Windows to end or kill some application from command line.&lt;/p&gt;  &lt;p&gt;The normal way to do this is by using the &lt;font face="Courier New" size="2"&gt;TASKKILL&lt;/font&gt; command, for example to end &lt;a href="http://www.mozilla-europe.org/nl/firefox/" target="_blank"&gt;FireFox&lt;/a&gt; one can use:&lt;/p&gt;  &lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;TASKKILL /F /IM “firefox.exe”&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When you need to stop some command window it can be dangerous to just kill any &lt;font face="Courier New" size="2"&gt;cmd.exe&lt;/font&gt;, so one could use the window title to kill a specific batch window, for example to kill any batch window with name starting with &lt;font face="Courier New" size="2"&gt;“SIM-”&lt;/font&gt; I used:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;TASKKILL /FI &amp;quot;&lt;span style="color: #8b0000"&gt;WINDOWTITLE eq SIM-*&lt;/span&gt;&amp;quot;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But sometimes you’ll need to be more specific, I wanted an automated way to kill some Java application but only when it was started with some specific parameter. The only way I found to do so on Windows was by using the &lt;a title="WMIC - Windows Management Instrumentation Commands" href="http://msdn.microsoft.com/en-us/library/aa394531.aspx" target="_blank"&gt;WMIC&lt;/a&gt; commands. This example show how I killed our Java monitor application which started as follows:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;java -Dapp.prop.file.monitor=&amp;quot;&lt;span style="color: #8b0000"&gt;monitor_system.properties&lt;/span&gt;&amp;quot; -classpath SOME_JARS Monitor&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Kill this specific Java instance:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;wmic process where &amp;quot;&lt;span style="color: #8b0000"&gt;name like '%%java.exe%%' AND commandline like '%%monitor%%'&lt;/span&gt;&amp;quot; DELETE&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Before killing your application, you want to make sure your query will result in the correct process, one can easily check the query by executing the similar &lt;font face="Courier New" size="2"&gt;wmic&lt;/font&gt; command without yet killing the process:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;wmic process where &amp;quot;&lt;span style="color: #8b0000"&gt;name like '%%java.exe%%' AND commandline like '%%monitor%%'&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;get&lt;/span&gt; processid, name, commandline /VALUE&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;More examples and combinations that can be used with wmic are available on &lt;a title="WMIC examples" href="http://support.microsoft.com/servicedesks/webcasts/wc072402/listofsampleusage.asp?SD=gn" target="_blank"&gt;this page&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Linux equivalent we used was &lt;font face="Courier New" size="2"&gt;pkill&lt;/font&gt;, for example to kill our simulators we used:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;pkill -f &amp;quot;&lt;span style="color: #8b0000"&gt;simulator.jar&lt;/span&gt;&amp;quot;&lt;/pre&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-2043872752624895893?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/2043872752624895893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/04/end-kill-some-application-from-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2043872752624895893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/2043872752624895893'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/04/end-kill-some-application-from-command.html' title='End (kill) some application from command line'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-3761239894124654720</id><published>2009-04-19T13:30:00.004+02:00</published><updated>2011-07-12T16:49:49.088+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='bat'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>SVN Automated repeated backup / dump – Windows / Linux</title><content type='html'>&lt;p&gt;Every project using &lt;a title="Subversion open source version control system" href="http://subversion.tigris.org/" target="_blank"&gt;SVN&lt;/a&gt; should have an automated backup system in place for their SVN repository. We decided we wanted a weekly incremental backup. But we also wanted to easily create a new initial backup. I scripted it on Windows and Linux with the Shell/Batch scripts shown below.&lt;/p&gt;&lt;p&gt;For both scripts, the same methods is used: we keep track of the last backed up revision in a file called &lt;font face="Courier New" size="2"&gt;svn_backup_delta.txt&lt;/font&gt;. Every time the script is started, an incremental dump is exported and archived, starting from the last dumped revision till the latest available revision. If the latest revision is the same as the last dumped revision, nothing will happen.&lt;/p&gt;&lt;p&gt;If the &lt;font face="Courier New" size="2"&gt;svn_backup_delta.txt&lt;/font&gt; doesn’t exist or the revision could not be read correctly, a complete initial dump from revision 0 till the latest revision will be exported and archived. The scripts are called daily or weekly with a standard OS scheduler. When we want to have a new initial complete dump, we simply remove the &lt;font face="Courier New" size="2"&gt;svn_backup_delta.txt&lt;/font&gt; file.&lt;/p&gt;&lt;p&gt;The scripts can be a good starting point to create your own automated SVN dumping mechanism.&lt;/p&gt;&lt;p&gt;Windows &lt;font face="Courier New" size="2"&gt;svnbackup.bat&lt;/font&gt; Batch script:&lt;/p&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;@echo off&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;::&lt;span style="color: #0000ff"&gt;CONFIGURATION&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; REPO_URL=https:&lt;span style="color: #008000"&gt;//url:8443/base/project&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; REPO_PATH=C:\repository\project&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_DIR=C:\backup&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; WINRAR=C:\Program Files\WinRAR\Rar.exe&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; LAST_DELTA_FILE=%&lt;span style="color: #0000ff"&gt;CD&lt;/span&gt;%\svn_backup_delta.txt&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_CONFIGURATION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Starting SVN backup&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Using following configuration:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo  -Repository URL: &amp;quot;&lt;span style="color: #8b0000"&gt;%REPO_URL%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo  -Repository full path: &amp;quot;&lt;span style="color: #8b0000"&gt;%REPO_PATH%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo  -File to keep track of last revision backed up: %LAST_DELTA_FILE%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_FILE=&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; Today=%Date: =0%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; Today=%Today:~-4%%Date:~-7,2%%Date:~-10,2%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; Now=%Time: =0%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;FOR&lt;/span&gt; /F &amp;quot;&lt;span style="color: #8b0000"&gt;tokens=1,2 delims=:.,&lt;/span&gt;&amp;quot; %%A &lt;span style="color: #0000ff"&gt;IN&lt;/span&gt; (&amp;quot;&lt;span style="color: #8b0000"&gt;%Now%&lt;/span&gt;&amp;quot;) DO &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; Now=%%A%%B&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;mkdir &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_DIR%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;svn info &amp;quot;&lt;span style="color: #8b0000"&gt;%REPO_URL%&lt;/span&gt;&amp;quot; &amp;gt; %TEMP%.\repoinfo.tmp&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; LAST_REV=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;for /f &amp;quot;&lt;span style="color: #8b0000"&gt;usebackq tokens=1,2 delims=: &lt;/span&gt;&amp;quot; %%i in (`find &amp;quot;&lt;span style="color: #8b0000"&gt;Revision: &lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%TEMP%\repoinfo.tmp&lt;/span&gt;&amp;quot;`) do (&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; LAST_REV=%%j&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Last revision:%LAST_REV%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Last delta file: %LAST_DELTA_FILE%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; EXIST &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot; GOTO DELTA&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:&lt;span style="color: #0000ff"&gt;FULL&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_FILE_NAME=%Today%-%Now%-&lt;span style="color: #0000ff"&gt;INITIAL&lt;/span&gt;-R%LAST_REV%.dump&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_FILE=%DUMP_DIR%\%DUMP_FILE_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Dump file name: %DUMP_FILE_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Dump file: %DUMP_FILE% &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;svnadmin dump &amp;quot;&lt;span style="color: #8b0000"&gt;%REPO_PATH%&lt;/span&gt;&amp;quot; -r 0:%LAST_REV% &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&amp;quot;&lt;span style="color: #8b0000"&gt;%WINRAR%&lt;/span&gt;&amp;quot; m &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%.rar&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Date: %Today%-%Now% &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Revision: %LAST_REV% &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;goto &lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:DELTA&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; LAST_DELTA=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;for /f &amp;quot;&lt;span style="color: #8b0000"&gt;usebackq tokens=1,2 delims=: &lt;/span&gt;&amp;quot; %%i in (`find &amp;quot;&lt;span style="color: #8b0000"&gt;Revision: &lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot;`) do (&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; LAST_DELTA=%%j&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Last delta:%LAST_DELTA%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Last revision:%LAST_REV%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; GOTO &lt;span style="color: #0000ff"&gt;FULL&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_REV%&lt;/span&gt;&amp;quot; GOTO &lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; /A INCRE_LAST_DELTA=LAST_DELTA+1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_FILE_NAME=%Today%-%Now%-INCREMENTAL-R%INCRE_LAST_DELTA%-&lt;span style="color: #0000ff"&gt;TO&lt;/span&gt;-R%LAST_REV%.dump&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DUMP_FILE=%DUMP_DIR%\%DUMP_FILE_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Dump file name: %DUMP_FILE_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Dump file: %DUMP_FILE%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;svnadmin dump &amp;quot;&lt;span style="color: #8b0000"&gt;%REPO_PATH%&lt;/span&gt;&amp;quot; -r %INCRE_LAST_DELTA%:%LAST_REV% --incremental --deltas &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&amp;quot;&lt;span style="color: #8b0000"&gt;%WINRAR%&lt;/span&gt;&amp;quot; m &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%.rar&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%DUMP_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Date: %Today%-%Now% &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Revision: %LAST_REV% &amp;gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%LAST_DELTA_FILE%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;goto &lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:&lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;rem pause&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;rem exit&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:&lt;span style="color: #0000ff"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Linux &lt;font face="Courier New"&gt;svnbackup.sh&lt;/font&gt; Shell script:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;#!/bin/sh&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;#SETUP&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;REPO_URL=https://url:8443/base/project&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;REPO_PATH=c:/repository/project&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;DUMP_DIR=/home/user/dumps&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;LAST_DELTA_FILE=svn_backup_delta.txt&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;#BEGINING &lt;span style="color: #0000ff"&gt;OF&lt;/span&gt; THE SCRIPT ITSELF&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;date&lt;/span&gt;=$(&lt;span style="color: #0000ff"&gt;date&lt;/span&gt; +%Y%m%d)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;LOG=dump-$&lt;span style="color: #0000ff"&gt;date&lt;/span&gt;.log&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;LAST_REV=$(svn info $REPO_URL |grep Revision |gawk &lt;span style="color: #008000"&gt;' { print $2}')&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;#Both files MUST exist, otherwise, wer&lt;span style="color: #008000"&gt;'e going to init new &amp;quot;delting&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; [ -e $LAST_DELTA_FILE ] ; &lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;LAST_DELTA=$(cat $LAST_DELTA_FILE)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; [ $LAST_DELTA -ne $LAST_REV ] ; &lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;DUMP_FILE_NAME=$&lt;span style="color: #0000ff"&gt;date&lt;/span&gt;-INCREMENTAL-R$((LAST_DELTA+1))-&lt;span style="color: #0000ff"&gt;TO&lt;/span&gt;-R$LAST_REV.dump.gz&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;DUMP_FILE=$DUMP_DIR/$DUMP_FILE_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;svnadmin dump $REPO_PATH -r $((LAST_DELTA +1)):$LAST_REV --incremental --deltas 2&amp;gt;&amp;gt;$LOG |gzip -c &amp;gt; $DUMP_FILE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo &lt;span style="color: #0000ff"&gt;nothing&lt;/span&gt; &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; : last revision number &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; same &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; last delta number, run it again later !&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;exit&lt;/span&gt; 0&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;DUMP_FILE_NAME=$&lt;span style="color: #0000ff"&gt;date&lt;/span&gt;-INITIAL-R$LAST_REV.dump.gz&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;DUMP_FILE=$DUMP_DIR/$DUMP_FILE_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;svnadmin dump $REPO_PATH 2&amp;gt;&amp;gt;$LOG | gzip -c &amp;gt; $DUMP_FILE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;#&lt;span style="color: #0000ff"&gt;Is&lt;/span&gt; all ok ?&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; [ $? -eq 0 ] ; &lt;span style="color: #0000ff"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo -n $LAST_REV &amp;gt; $LAST_DELTA_FILE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo &amp;quot;&lt;span style="color: #8b0000"&gt;ERROR :&lt;/span&gt;&amp;quot; $&lt;span style="color: #0000ff"&gt;date&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;Problem occured while saving dump&lt;/span&gt;&amp;quot; &amp;gt;&amp;gt;$LOG&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;Update 02/07/2010: Script tested and working in Windows 7 (in combination with &lt;a href="http://www.visualsvn.com/server/" target="_blank"&gt;Visual SVN server&lt;/a&gt;). Make sure to add the bin folder of Visual SVN server to your 'path' system variable to make the 'svn' command available system wide. Run the script with right-click 'Run as administrator'.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-3761239894124654720?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/3761239894124654720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/04/svn-automated-repeated-backup-dump.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3761239894124654720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/3761239894124654720'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/04/svn-automated-repeated-backup-dump.html' title='SVN Automated repeated backup / dump – Windows / Linux'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-8636442947461958741</id><published>2009-04-12T18:02:00.001+02:00</published><updated>2011-10-09T14:47:23.584+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='batch'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='utility'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><category scheme='http://www.blogger.com/atom/ns#' term='regedit'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Run custom application or script as a Windows service</title><content type='html'>&lt;p&gt;&lt;img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="149" src="http://1.bp.blogspot.com/_zdK8vw61Te0/R-krlcQw4BI/AAAAAAAAAiI/njXYHNmrzVk/s800/803_Services_Console.png" width="209" align="right" border="0" /&gt;If you need your application or script to be started, whenever Windows is booted, you need to install it as a service (so&amp;#160; it will even be started when you didn’t login yet). Microsoft offers a little tool to easily create your own service and make it run some batch file / application as a part of their &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;amp;displaylang=en" target="_blank"&gt;Windows Server Resource Kit Tools&lt;/a&gt;. From this package, you only need &lt;font face="Courier New" size="2"&gt;srvany.exe&lt;/font&gt; and &lt;font face="Courier New" size="2"&gt;instsrv.exe&lt;/font&gt; to install your custom service, but you still need to perform all &lt;a href="http://support.microsoft.com/kb/137890" target="_blank"&gt;this manual configuration&lt;/a&gt; before your service will be running.&lt;/p&gt;  &lt;p&gt;I created the following batch script to easily install or uninstall your custom application as a service. All required information will be requested interactively to the user step by step. No further manual configuration will be needed anymore. Errors will be shown with colors and attention points will be flashed.&lt;/p&gt;  &lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;@echo off&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;echo Use this script &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; install / uninstall your custom applications &lt;span style="color: #0000ff"&gt;or&lt;/span&gt; scripts &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; a service &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; make sure they will be started whenever Windows &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; booted.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DFAULT_BACKGROUND_COLOR=0&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; DEFAULT_TEXT_COLOR=7&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; ERROR_BACKGROUND_COLOR=4&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; ERROR_TEXT_COLOR=F&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; ATTENTION_BACKGROUND_COLOR=0&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; ATTENTION_TEXT_COLOR=F&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 0 = Black&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 1 = Blue&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 2 = Green&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 3 = Aqua&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 4 = Red&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 5 = Purple&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 6 = Yellow&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 7 = White&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 8 = Gray&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; 9 = Light Blue&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; A = Light Green&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; B = Light Aqua&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; C = Light Red&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; D = Light Purple&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; E = Light Yellow&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; F = Bright White&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ATTENTION_POINT=MAIN_MENU_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :MAIN_MENU_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; INPUT=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; Install a &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; custom service, press I.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; Uninstall a previously created custom service, press U.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;To&lt;/span&gt; open the Windows Services application, press S.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p INPUT=Press E &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Exit&lt;/span&gt;: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;i&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; START_INSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;u&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; START_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;s&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; START_SERVICES&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;e&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXIT&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_MAIN_MENU_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  echo.     &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:START_INSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; INTERACTIVE MODE &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; used, lines below kept &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; reference&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :HARD_CODED_PATHS_AND_NAMES&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; APP_NAME=REPLACE_THIS_WITH_YOUR_CUSTOM_APP_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; APP_PATH=FULL_PATH_TO_CUSTOM_APP&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; one can use %CD% &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; the path, which will be replace by the current directory&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; uncomment following 2 lines &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; you want &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; use the folder name (where this bat file &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; run) &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; service name APP_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_NAME=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;rem&lt;/span&gt; &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; %%* &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (.) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; APP_NAME=%%~n*&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :INTERACTIVE_INPUT_OF_PATHS_AND_NAMES&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_APP_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_NAME=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p APP_NAME=Provide the name &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; your custom application (will be used &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; the name &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; the service): &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_APP_NAME&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_OF_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_PATH=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p APP_PATH=Provide the full path &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; your custom application &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; run &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; a service (don&lt;span style="color: #008000"&gt;'t use quotes): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_OF_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :CHECK_CUSTOM_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; EXIST &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_PATH%&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_CUSTOM_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo Your custom application %APP_NAME% could &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; be found at %APP_PATH%!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo Please &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; again!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ERROR_ATTENTION_POINT=INTERACTIVE_INPUT_OF_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ERROR_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_CHECK_CUSTOM_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      COLOR %DFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_APP_FOLDER&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_FOLDER=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p APP_FOLDER=Provide the folder &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; be used &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; working directory &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; your custom application (press ENTER &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; required) (don&lt;span style="color: #008000"&gt;'t use quotes): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_APP_PARAM&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_APP_PARAM&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_PARAM=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p APP_PARAM=Provide the parameters &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; your custom application (press ENTER &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; no parameters are required) (don&lt;span style="color: #008000"&gt;'t use quotes): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_APP_PARAM&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; INST_SERVICE_APP_PATH=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p INST_SERVICE_APP_PATH=Provide the full path &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; instsrv.exe (don&lt;span style="color: #008000"&gt;'t use quotes). LEAVE EMPTY to use default path (%CD%\instsrv.exe): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :CHECK_INST_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; DEFAULT_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_CHECK_INST_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :CHECK_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; EXIST &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo instsrv.exe could &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; be found at %INST_SERVICE_APP_PATH%!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo Please &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; again!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ERROR_ATTENTION_POINT=INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ERROR_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_CHECK_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      COLOR %DFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :INTERACTIVE_INPUT_OF_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; SERVICE_APP_PATH=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p SERVICE_APP_PATH=Provide the full path &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; srvany.exe (don&lt;span style="color: #008000"&gt;'t use quotes). LEAVE EMPTY to use default path (%CD%\srvany.exe): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_INTERACTIVE_INPUT_OF_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :CHECK_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%SERVICE_APP_PATH%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; DEFAULT_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_CHECK_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :CHECK_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; EXIST &amp;quot;&lt;span style="color: #8b0000"&gt;%SERVICE_APP_PATH%&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo srvany.exe could &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; be found at %SERVICE_APP_PATH%!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo Please &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; again!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ERROR_ATTENTION_POINT=INTERACTIVE_INPUT_OF_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ERROR_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_CHECK_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      COLOR %DFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_INTERACTIVE_INPUT_OF_PATHS_AND_NAMES  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :SHOW_CONFIG&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Ready &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; install your custom application, &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; the following configuration:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   Custom application name: %APP_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   Custom application full path: %APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   Custom application parameters: %APP_PARAM%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   Custom application working directory: %APP_FOLDER%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   srvany.exe full path: %SERVICE_APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo   instsrv.exe full path: %INST_SERVICE_APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ATTENTION_POINT=SHOW_CONFIG_WAIT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :SHOW_CONFIG_WAIT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      COLOR %ATTENTION_BACKGROUND_COLOR%%ATTENTION_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; INPUT=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p INPUT=Press ENTER &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; &lt;span style="color: #0000ff"&gt;continue&lt;/span&gt; installation, all other will &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; main menu: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_SHOW_CONFIG_WAIT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_SHOW_CONFIG&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :INSTALL_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_NAME%&lt;/span&gt;&amp;quot; &amp;quot;&lt;span style="color: #8b0000"&gt;%SERVICE_APP_PATH%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Service installed : %APP_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_INSTALL_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :UPDATE_REGISTRY&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    REG ADD &amp;quot;&lt;span style="color: #8b0000"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%APP_NAME%\Parameters&lt;/span&gt;&amp;quot; /v &amp;quot;&lt;span style="color: #8b0000"&gt;Application&lt;/span&gt;&amp;quot; /t REG_SZ /d &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_PATH%&lt;/span&gt;&amp;quot; /f&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_FOLDER%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; REG ADD &amp;quot;&lt;span style="color: #8b0000"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%APP_NAME%\Parameters&lt;/span&gt;&amp;quot; /v &amp;quot;&lt;span style="color: #8b0000"&gt;AppDirectory&lt;/span&gt;&amp;quot; /t REG_SZ /d &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_FOLDER%&lt;/span&gt;&amp;quot; /f&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_PARAM%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; REG ADD &amp;quot;&lt;span style="color: #8b0000"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%APP_NAME%\Parameters&lt;/span&gt;&amp;quot; /v &amp;quot;&lt;span style="color: #8b0000"&gt;AppParameters&lt;/span&gt;&amp;quot; /t REG_SZ /d &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_PARAM%&lt;/span&gt;&amp;quot; /f&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Registry updated &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; run %APP_PATH% &lt;span style="color: #0000ff"&gt;with&lt;/span&gt; service %APP_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_UPDATE_REGISTRY&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :START_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ATTENTION_POINT=START_SERVICE_INPUT_REQUEST&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :START_SERVICE_INPUT_REQUEST&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      echo The service &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; now installed successfully (&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; no errors are logged above!)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; INPUT=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p INPUT=&lt;span style="color: #0000ff"&gt;To&lt;/span&gt; start the service now, press Y. All others will &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; main menu: &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; /i &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%INPUT%&lt;/span&gt;&amp;quot; == &amp;quot;&lt;span style="color: #8b0000"&gt;y&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; END_START_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    :END_START_SERVICE_INPUT_REQUEST&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    NET START &amp;quot;&lt;span style="color: #8b0000"&gt;%APP_NAME%&lt;/span&gt;&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Service %APP_NAME% started&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_START_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_START_INSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :DEFAULT_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;Using&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; path &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; instsrv.exe %INST_SERVICE_APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; INST_SERVICE_APP_PATH=%CD%\instsrv.exe&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_INST_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_DEFAULT_INST_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :DEFAULT_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;Using&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; path &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; srvany.exe %SERVICE_APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; SERVICE_APP_PATH=%CD%\srvany.exe&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_SERVICE_APP_PATH_INPUT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_DEFAULT_SERVICE_APP_PATH&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_START_INSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:START_SERVICES&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  start &amp;quot;&lt;span style="color: #8b0000"&gt;Services&lt;/span&gt;&amp;quot; services.msc&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_START_SERVICES&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:START_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :INTERACTIVE_INPUT_APP_NAME_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; APP_NAME=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p APP_NAME=Provide the name &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; your custom application (the name &lt;span style="color: #0000ff"&gt;of&lt;/span&gt; the service &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; uninstall): &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_INTERACTIVE_INPUT_APP_NAME_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo. &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; INST_SERVICE_APP_PATH=&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; /p INST_SERVICE_APP_PATH=Provide the full path &lt;span style="color: #0000ff"&gt;to&lt;/span&gt; instsrv.exe (don&lt;span style="color: #008000"&gt;'t use quotes). LEAVE EMPTY to use default path (%CD%\instsrv.exe): &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :CHECK_INST_SERVICE_APP_PATH_INPUT_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot;==&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;goto&lt;/span&gt; DEFAULT_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_CHECK_INST_SERVICE_APP_PATH_INPUT_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :CHECK_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;IF&lt;/span&gt; EXIST &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot; &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo instsrv.exe could &lt;span style="color: #0000ff"&gt;not&lt;/span&gt; be found at %INST_SERVICE_APP_PATH%!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Please &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; again!&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; RETURN_DRAW_ERROR_ATTENTION_POINT=INTERACTIVE_INPUT_OF_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; DRAW_ERROR_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_CHECK_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    COLOR %DFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :STOP_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    NET &lt;span style="color: #0000ff"&gt;STOP&lt;/span&gt; %APP_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Service %APP_NAME% stopped&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_STOP_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :REMOVE_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &amp;quot;&lt;span style="color: #8b0000"&gt;%INST_SERVICE_APP_PATH%&lt;/span&gt;&amp;quot; %APP_NAME% REMOVE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Service %APP_NAME% removed&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_REMOVE_SERVICE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :UPDATE_REGISTRY_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    REG DELETE HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%APP_NAME%\ /va /f&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo Registry cleaned up &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; service %APP_NAME%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_UPDATE_REGISTRY_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_START_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :DEFAULT_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    echo &lt;span style="color: #0000ff"&gt;Using&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; path &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; instsrv.exe %INST_SERVICE_APP_PATH%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;SET&lt;/span&gt; INST_SERVICE_APP_PATH=%CD%\instsrv.exe&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; END_CHECK_INST_SERVICE_APP_PATH_INPUT_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  :END_DEFAULT_INST_SERVICE_APP_PATH_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_START_UNINSTALL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; MAIN_MENU&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:EXIT_WITH_PAUSE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  echo The &lt;span style="color: #0000ff"&gt;end&lt;/span&gt;. Comments &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; updates: http://myTselection.blogspot.com, Copyright MightyMouse. Copyright srvany &lt;span style="color: #0000ff"&gt;and&lt;/span&gt; instsrv Microsoft.&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  pause&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; &lt;span style="color: #0000ff"&gt;EXIT&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_EXIT_WITH_PAUSE&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:&lt;span style="color: #0000ff"&gt;EXIT&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_EXIT&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ATTENTION_BACKGROUND_COLOR%%ATTENTION_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ATTENTION_BACKGROUND_COLOR%%ATTENTION_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ATTENTION_BACKGROUND_COLOR%%ATTENTION_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; %RETURN_DRAW_ATTENTION_POINT%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:DRAW_ERROR_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ERROR_BACKGROUND_COLOR%%ERROR_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ERROR_BACKGROUND_COLOR%%ERROR_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ERROR_BACKGROUND_COLOR%%ERROR_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %DEFAULT_BACKGROUND_COLOR%%DEFAULT_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  @PING 1.1.1.1 -n 1 -w 100 &amp;gt;NUL&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  COLOR %ERROR_BACKGROUND_COLOR%%ERROR_TEXT_COLOR%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;:END_ERROR_DRAW_ATTENTION&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;GOTO&lt;/span&gt; %RETURN_DRAW_ERROR_ATTENTION_POINT%&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;@echo &lt;span style="color: #0000ff"&gt;on&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A full package to easily install your own custom application as a service can be downloaded &lt;a href="http://dl.dropbox.com/u/2328438/CustomAppAsService.exe" target="_blank"&gt;here&lt;/a&gt;, &lt;a href="http://dl.dropbox.com/u/2328438/CustomAppAsService.zip" target="_blank"&gt;sources (zip)&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Update (26/04/09): Added possibility to specify application working directory and command line parameters. (AppDirectory and AppParameter registry keys.)&lt;/p&gt;  &lt;p&gt;Update (09/10/2011): New links&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-8636442947461958741?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/8636442947461958741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/04/run-custom-script-as-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8636442947461958741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8636442947461958741'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/04/run-custom-script-as-service.html' title='Run custom application or script as a Windows service'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zdK8vw61Te0/R-krlcQw4BI/AAAAAAAAAiI/njXYHNmrzVk/s72-c/803_Services_Console.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-8707727077790376713</id><published>2009-04-12T14:47:00.003+02:00</published><updated>2011-01-07T10:00:30.523+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='theme'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='tweaks'/><title type='text'>My “Firefox add-ons” selection</title><content type='html'>&lt;p&gt;&lt;a href="http://www.mozilla-europe.org/nl/firefox/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" border="0" align="right" src="https://addons.mozilla.org/img/app-icons/firefox.png" width="108" height="103" /&gt;Firefox&lt;/a&gt; has one big benefit: it’s support for &lt;a href="https://addons.mozilla.org/nl/firefox" target="_blank"&gt;Add-ons&lt;/a&gt; / Plug- ins / &lt;a href="https://addons.mozilla.org/nl/firefox/browse/type:2" target="_blank"&gt;Themes&lt;/a&gt; / Extensions. Without this benefit, I simply wouldn’t use Firefox, but only &lt;a href="http://www.google.com/chrome" target="_blank"&gt;Google Chrome&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I list below, the Add-ons I’m using mostly:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.roboform.com/" target="_blank"&gt;AI Roboform toolbar&lt;/a&gt;: best way to safely keep track of your website logins, passwords, forms. Even better with it’s nice and easy synchronization to &lt;a href="http://www.roboform.com/wince.html" target="_blank"&gt;Windows Mobile PDA&lt;/a&gt;. the nice toolbar allows you to navigate to pages you use most and immediately login, with just 2 or 3 characters to type! &lt;/li&gt;    &lt;li&gt;&lt;a href="http://pagesperso-orange.fr/marc.boullet/ext/extensions-en.html" target="_blank"&gt;All-in-one Gestures extension&lt;/a&gt;: easily navigate using your mouse (navigate using mouse movements and special mouse click combinations) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cooliris.com/" target="_blank"&gt;Cooliris picture/movie viewer&lt;/a&gt;: great way to watch pictures from many sites (facebook, flickr, google images, youtube, …). The new &lt;a href="http://www.cooliris.com/beta_110/" target="_blank"&gt;beta 1.10 version&lt;/a&gt; has even better support for facebook. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://delicious.com/" target="_blank"&gt;Delicious bookmarks&lt;/a&gt;: keep your bookmarks online, so you can easily find back what you liked before, everywhere, anytime. This plug-in has a nice sidebar and easy integration. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://developers.facebook.com/toolbar/" target="_blank"&gt;Facebook toolbar&lt;/a&gt;: some extra’s for facebook &lt;/li&gt;    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/518" target="_blank"&gt;Fetch Text URL&lt;/a&gt;: select some non clickable or miss-spelled url and easily open the url in a new tab. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://flashgot.net/" target="_blank"&gt;Flashgot&lt;/a&gt;: integration of &lt;a href="http://www.flashget.com/en/download.htm" target="_blank"&gt;Flashget&lt;/a&gt; (download manager) in Firefox. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt;: required add-on for every web developer. Nice JavaScript debugging possibilities. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.greasespot.net/" target="_blank"&gt;Greasemonkey&lt;/a&gt;: framework to easily install scripts to customize your navigation in specific websites. Thousands of scripts are available for many well known sites. Some of the scripts I prefer:       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/23200" target="_blank"&gt;JavaDoc&lt;/a&gt; search frame: very nice search facilities for JavaDoc pages. Find as you type support. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/1214" target="_blank"&gt;StuBru download stream&lt;/a&gt;s: add extra links on the Studio Brussel webpages to easily download theire music webstreams. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/21977" target="_blank"&gt;IMDB pirated version&lt;/a&gt;: add links to IMDB pages to easily download movies, subtitles, torrents, trailers, etc. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/22569" target="_blank"&gt;YouTube Lyrics&lt;/a&gt;: immediately show the lyrics when watching a song movie. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/91980" target=_blank"&gt;YouTube Downloader&lt;/a&gt;: easily download mp4 and / or flv version of YouTube movies&lt;/li&gt;&lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/4169" target="_blank"&gt;IMDB enlarge actor pictures on hover&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/38985" target="_blank"&gt;Rapidshare autowait&lt;/a&gt;: automatically start the rapidshare free-user timer and start the download &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/9836" target="_blank"&gt;Google maps maximizer&lt;/a&gt;: add extra buttons to be able to maximize the Google maps &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/59027" target="_blank"&gt;Test Aankoop&lt;/a&gt;: add pdf download link next to &lt;a href="http://www.test-aankoop.be/tadoc" target="_blank"&gt;magazine&lt;/a&gt; topics for easy download &lt;/li&gt;        &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/59156" target="_blank"&gt;Surfplaza&lt;/a&gt;: remove adds and replace by weather image on this great &lt;a href="http://www.surfplaza.be" target="_blank"&gt;start page&lt;/a&gt; &lt;/li&gt;     &lt;li&gt;&lt;a href="http://userscripts.org/scripts/show/8551" target="_blank"&gt;AutoPagerize&lt;/a&gt;: Automatically load next pages while scrolling down, to get a continues scrollable page (eg for Google results)&lt;/li&gt;&lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1419" target="_blank"&gt;IE Tab&lt;/a&gt;: some sites still require Internet Explorer. With this plug-in you can combine Internet Explorer within Firefox. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://nextplease.mozdev.org/" target="_blank"&gt;NextPlease&lt;/a&gt;: add some keyboard and mouse shortcuts to easily navigate through sites with ‘next’ and ‘previous’ kind of links. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://mfe.gorgias.de/" target="_blank"&gt;SendTo&lt;/a&gt;: Send selected text to a text file, together with url and timestamp. SendTo v0.4 is not compatible with Firefox 3.0, but I just changed the compatibility settings in the plug-in and it still works very well now. I use this plugin a lot to always keep a text file with some information on applications I download. I download a lot of software and want to be able to easily retrieve what I’ve downloaded before or get some basic information on the tool. I made an UltraEdit macro to copy the text from the sendto file into a new file, this way I can even retrieve all I need even faster in the format I prefer. All files (SendTo v0.4 for FF 3, batch file to start ultra edit with macro, UltraEdit macro) can be downloaded &lt;a href="http://rapidshare.com/files/220418965/SendTo_UltraEdit.zip.html" target="_blank"&gt;here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tmp.garyr.net/" target="_blank"&gt;Tab Mix Plus&lt;/a&gt;: add extra options and extra functionality for the tabs in Firefox. For example duplicate current tab, open tab on mouse hover, show tab close button on mouse hover, etc. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://chrispederick.com/work/web-developer/" target="_blank"&gt;WebDeveloper&lt;/a&gt;: required add-on for every web developer. See and change many site settings, form settings, CSS settings, javascripts etc. &lt;/li&gt;    &lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4988" target="_blank"&gt;Vista-aero theme&lt;/a&gt;: just a nice look and feel, copied from Internet Explorer. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once &lt;a href="http://www.google.com/chrome" target="_blank"&gt;Google Chrome&lt;/a&gt; will support all this functionality I’ll dump Firefox and will finally get my 400MB stolen memory back.&lt;/p&gt;  &lt;p&gt;UPDATE 05/10/2009: added links to my own Greasemonkey scripts&lt;/p&gt;  &lt;p&gt;UPDATE 01/06/2010: added AutoPagerize Greasemonkey link&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4275131957855627760-8707727077790376713?l=mytselection.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mytselection.blogspot.com/feeds/8707727077790376713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mytselection.blogspot.com/2009/04/my-firefox-add-ons-selection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8707727077790376713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4275131957855627760/posts/default/8707727077790376713'/><link rel='alternate' type='text/html' href='http://mytselection.blogspot.com/2009/04/my-firefox-add-ons-selection.html' title='My “Firefox add-ons” selection'/><author><name>myT</name><uri>http://www.blogger.com/profile/03578136523804377139</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_OiMAwW7QI68/SZlrok8X9DI/AAAAAAAAAuI/pD3is1fXp9g/S220/MightyMouse+T+right+text.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4275131957855627760.post-3767634112049718244</id><published>2009-04-12T11:56:00.002+02:00</published><updated>2010-02-10T15:12:34.065+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='beanshell'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='jmeter'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>JMeter to check files and file content</title><content type='html'>&lt;p&gt;&lt;img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="90" src="http://jakarta.apache.org/jmeter/images/logo.jpg" width="179" align="right" border="0" /&gt;Recently, we needed a &lt;a href="http://jakarta.apache.org/jmeter/" target="_blank"&gt;JMeter&lt;/a&gt; which could perform some tests to make sure files were created on the file system,&amp;#160; matching a specific file path and filename, and some text had to match in the file itself. These files were created by a simulator, but to test our project, we wanted to automatically check if the simulator received all required files.&lt;/p&gt;  &lt;p&gt;Apparently, JMeter is not often used for such a checks on the file system, but we preferred JMeter so we could combine the result reports nicely with the reports of the sending of the files (performed by another JMeter).&lt;/p&gt;  &lt;p&gt;We succeeded by using &lt;a href="http://www.beanshell.org/" target="_blank"&gt;BeanShell&lt;/a&gt; scripts in the JMeter with a BeanShell Sampler and a BeanShell Assertion. I created a &lt;a href="http://freetexthost.com/qminfbjswr" target="_blank"&gt;template JMeter jmx&lt;/a&gt; and replaced some tags (@…@) in this template for each of our test cases. An example of a filled in JMeter jmx file based on this template is available &lt;a href="http://freetexthost.com/jfie5nyxed" target="_blank"&gt;here&lt;/a&gt;. We transform the template to the specific test case jmx file using Excel macros for easy configuration management.&lt;/p&gt;  &lt;p&gt;In the JMeter we always linked a CheckFileSampler.bsh and CheckFileAssertion.bsh scripts to perform the required checks. Unlimited properties can be assigned in the JMeter jmx and these properties can very easily be retrieved inside the BeanShell script by using: &lt;/p&gt;  &lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;value = vars.get(&amp;quot;&lt;span style="color: #8b0000"&gt;&amp;lt;variable name&amp;gt;&lt;/span&gt;&amp;quot;);&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the BeanShell script, one can just use standard Java code. I made a &lt;a href="http://freetexthost.com/oxdxvsyszx" target="_blank"&gt;simplified version&lt;/a&gt; of the code, which is less related to our project. In this code, I build up the path of the file which is expected to exist. The file path is build up based on the properties set in the jmx file. I check if the file exists. If it could be found, I match some patterns against the content of the file. If all goes well, the test case succeeds, else it fails.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.ArrayList;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.Arrays;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.List;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.regex.Matcher;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.regex.Pattern;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.io.*;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.regex.*;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;Failure=&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;FailureMessage=&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String testcase = vars.get(&amp;quot;&lt;span style="color: #8b0000"&gt;testcase&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String simulatorReceiveMessageBasePath = vars.get(&amp;quot;&lt;span style="color: #8b0000"&gt;simulatorReceiveMessageBasePath&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String partnerName = vars.get(&amp;quot;&lt;span style="color: #8b0000"&gt;partnerNameProperty&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #008000"&gt;//should the file exist (be received) or not for this partner? &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String partnerReceiveMessageRequired = vars.get(partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;_partnerRequiredReceiveProperty&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #008000"&gt;//the following pattern should match within the file (if it exists), semicolon (;) separeted list&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String patternsToMatchList = vars.get(&amp;quot;&lt;span style="color: #8b0000"&gt;patternsToMatchList&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #008000"&gt;//within the basepath, the simulator creates a new folder on every start of the simulator, we wanted to retrieve the newest folder&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #008000"&gt;//retrieve newest folder from partner&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;File basefolder = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; File(simulatorReceiveMessageBasePath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!basefolder.isDirectory()) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  Failure = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  log.error(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName  + &amp;quot;&lt;span style="color: #8b0000"&gt; incorrect base folder: &lt;/span&gt;&amp;quot; + simulatorReceiveMessageBasePath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  FailureMessage = testcase + &amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot; + partnerName  + &amp;quot;&lt;span style="color: #8b0000"&gt;;INCORRECT_BASE_FOLDER;&lt;/span&gt;&amp;quot; + simulatorReceiveMessageBasePath + &amp;quot;&lt;span style="color: #8b0000"&gt;|&lt;/span&gt;&amp;quot; + FailureMessage;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;}  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;File[] foldersinbasefolder = basefolder.listFiles();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;Comparator filecomp = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Comparator() {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; compare(Object o1, Object o2) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Long(((File)o2).lastModified()).compareTo&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;             (&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Long(((File) o1).lastModified()));&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    };  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;Arrays.sort( foldersinbasefolder, filecomp);    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (foldersinbasefolder == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; || foldersinbasefolder.length == 0) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  Failure = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  log.error(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName  + &amp;quot;&lt;span style="color: #8b0000"&gt; no subfolder could be found in the base folder: &lt;/span&gt;&amp;quot; + simulatorReceiveMessageBasePath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  FailureMessage = testcase + &amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot; + partnerName  + &amp;quot;&lt;span style="color: #8b0000"&gt;;NOSUBFOLDERSINBASEFOLDER;&lt;/span&gt;&amp;quot; + simulatorReceiveMessageBasePath + &amp;quot;&lt;span style="color: #8b0000"&gt;|&lt;/span&gt;&amp;quot; + FailureMessage;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;}    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String partnerSimulatorFolder  = foldersinbasefolder[0].getCanonicalPath();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;String partnerReceiveMessageFullPath = partnerSimulatorFolder + &amp;quot;&lt;span style="color: #8b0000"&gt;\\&lt;/span&gt;&amp;quot; + testcase + &amp;quot;&lt;span style="color: #8b0000"&gt;_message.xml&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (partnerReceiveMessageRequired != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; partnerReceiveMessageRequired.equals(&amp;quot;&lt;span style="color: #8b0000"&gt;1&lt;/span&gt;&amp;quot;))  {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #008000"&gt;//partner should have received the message&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  log.info(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt; should have received message with full path &lt;/span&gt;&amp;quot; + partnerReceiveMessageFullPath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  File f = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; File(partnerReceiveMessageFullPath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (f.exists() &amp;amp;&amp;amp; f.isFile() &amp;amp;&amp;amp; f.length() &amp;gt; 0) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    log.info(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt; has received message with full path &lt;/span&gt;&amp;quot; + partnerReceiveMessageFullPath + &amp;quot;&lt;span style="color: #8b0000"&gt; size: &lt;/span&gt;&amp;quot; + f.length() + &amp;quot;&lt;span style="color: #8b0000"&gt;bytes&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; patternsMatched = 0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (patternsToMatchList != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; patternsToMatchList != &amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #008000"&gt;//check if the pattern can be matched with the file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      String[] patternsToMatch = patternsToMatchList.split(&amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      forloop:&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (String patternToMatch : patternsToMatch) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;boolean&lt;/span&gt; patternmatchresult = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(patternmatchresult == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            Pattern regexp = Pattern.compile(&amp;quot;&lt;span style="color: #8b0000"&gt;.*&lt;/span&gt;&amp;quot; + patternToMatch + &amp;quot;&lt;span style="color: #8b0000"&gt;.*&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            Matcher matcher = regexp.matcher(&amp;quot;&lt;span style="color: #8b0000"&gt;&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            LineNumberReader lineReader = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              lineReader = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; LineNumberReader( &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; FileReader(f) );&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              String line = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              &lt;span style="color: #0000ff"&gt;boolean&lt;/span&gt; resultinlinewhileloop = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; ((line = lineReader.readLine()) != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; resultinlinewhileloop) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  matcher.reset( line ); &lt;span style="color: #008000"&gt;//reset the input&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  log.debug(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;, line: &lt;/span&gt;&amp;quot; + line);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( matcher.find() ) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                    patternsMatched++;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                    log.debug(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;, match found in file for pattern: &lt;/span&gt;&amp;quot; + patternToMatch);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                    resultinlinewhileloop = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                    &lt;span style="color: #0000ff"&gt;continue&lt;/span&gt; forloop; &lt;span style="color: #008000"&gt;//continue with next pattern to match in file, doesn't seem to work&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(!resultinlinewhileloop) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  Failure=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  patternmatchresult = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  FailureMessage=testcase + &amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot; + partnerReceiveMessageFullPath + &amp;quot;&lt;span style="color: #8b0000"&gt;;NOPATTERNMATCH;&lt;/span&gt;&amp;quot; + patternToMatch + &amp;quot;&lt;span style="color: #8b0000"&gt;|&lt;/span&gt;&amp;quot; +  FailureMessage;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  log.error(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;, pattern could not be matched against the file! &lt;/span&gt;&amp;quot; + patternToMatch);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                  &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (FileNotFoundException ex) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              ex.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (IOException ex){&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              ex.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            &lt;span style="color: #0000ff"&gt;finally&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              &lt;span style="color: #0000ff"&gt;try&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (lineReader!= &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;) lineReader.close();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (IOException ex) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;                ex.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;              }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;            }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      log.debug(&amp;quot;&lt;span style="color: #8b0000"&gt;patternsMatched:&lt;/span&gt;&amp;quot; + patternsMatched + &amp;quot;&lt;span style="color: #8b0000"&gt;, patternsToMatch:&lt;/span&gt;&amp;quot; + patternsToMatch + &amp;quot;&lt;span style="color: #8b0000"&gt;, length:&lt;/span&gt;&amp;quot; + patternsToMatch.length);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #008000"&gt;//check if all patterns could be matched agains the file content&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (patternsMatched == patternsToMatch.length) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          log.info(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;, all paterns could be matched against file. Test completed successfully!&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        Failure=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        log.error(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;, some patterns could not be matched against the file! &lt;/span&gt;&amp;quot; + patternsToMatchList.toString());&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    log.error(testcase + &amp;quot;&lt;span style="color: #8b0000"&gt; - FILE NOT FOUND! Partner &lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt; should have received message with full path &lt;/span&gt;&amp;quot; + partnerReceiveMessageFullPath);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    Failure=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    FailureMessage=testcase + &amp;quot;&lt;span style="color: #8b0000"&gt;;&lt;/span&gt;&amp;quot; + partnerName + &amp;quot;&lt;span style="color: #8b0000"&gt;;FILENOTFOUND;&lt;/span&gt;&amp;quot; + partnerReceiveMessageFullPath + &amp;quot;&lt;span style="color: #8b0000"&gt;|&lt;/span&gt;&amp;quot; + FailureMessage;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In our own project, we wanted to check different partners for every test case. Which resulted in &lt;a href="http://freetexthost.com/e3qlbkydao" target="_blank"&gt;this BeanShell&lt;/a&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We run our JMeter jmx files using &lt;a href="http://ant.apache.org/" target="_blank"&gt;Ant.&lt;/a&gt; This build file shows how I start our JMeter and create a nice looking report web page of it. I have some code to make some necessary transformations depending if I run the JMeters on our Windows or Linux machines.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; &lt;span style="color: #0000ff"&gt;?&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;basedir&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;default&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;dist_receive&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Run JMeters to check files received&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taskdef&lt;/span&gt; &lt;span style="color: #ff0000"&gt;resource&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;net/sf/antcontrib/antcontrib.properties&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;windows.local.basepath.location&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;R:&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;linux.local.basepath.location&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;/home/user/&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;condition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;property&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;local.basepath.location&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${windows.local.basepath.location}&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #ff0000"&gt;else&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${linux.local.basepath.location}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;os&lt;/span&gt; &lt;span style="color: #ff0000"&gt;family&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;condition&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;condition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;property&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;target.os&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #ff0000"&gt;else&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;linux&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;os&lt;/span&gt; &lt;span style="color: #ff0000"&gt;family&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;condition&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;test.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${local.basepath.location}/project/test&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;tools.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${local.basepath.location}/tools&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${tools.dir.fullpath}/jakarta-jmeter-2.3.2&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.install.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.dir.fullpath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;ant.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${tools.dir.fullpath}/apache-ant-1.7.1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;java.class.path&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${tools.dir.fullpath}/jdk1.6.0_10/&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;ant.install.dir.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${tools.dir.fullpath}/apache-ant-1.7.1/bin&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;file&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.install.dir.fullpath}/bin/jmeter.properties&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;testcase.basepath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${test.dir.fullpath}/test_data&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.file.basepath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${test.dir.fullpath}/test_results/&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.filename&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.extension&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;.xml&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.report.filename&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;report&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.report.extension&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;.html&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.receive.filename&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;receive&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.receive.result.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.result.file.basepath}${jmeter.result.filename}_${jmeter.receive.filename}${jmeter.result.extension}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.receive.report.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.result.file.basepath}${jmeter.report.filename}_${jmeter.receive.filename}${jmeter.report.extension}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;testcase.receive.extension&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;*_receive.jmx&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;taskdef&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;classname&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;org.programmerplanet.ant.taskdefs.jmeter.JMeterTask&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;classpath&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;pathelement&lt;/span&gt; &lt;span style="color: #ff0000"&gt;location&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.dir.fullpath}/extras/ant-jmeter-1.0.9.jar&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;classpath&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;taskdef&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tstamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;format&lt;/span&gt; &lt;span style="color: #ff0000"&gt;property&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;current.date.time&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;MM/dd/yyyy hh:mm&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tstamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tstamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;format&lt;/span&gt; &lt;span style="color: #ff0000"&gt;property&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;xml.current.date&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;yyyy-MM-dd&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tstamp&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;dist_receive&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;description&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;run jmeter(s) to check received messages&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;test.cases.to.run.basepath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${testcase.basepath}/&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;property&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;test.case.to.perform&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;  &lt;span style="color: #008000"&gt;&amp;lt;!--if the props file does not contain a 'test.name' =&amp;gt; the variable needs to be known but no processing should take place. Properties are immutable, if already set by prop file=&amp;gt; not overridden here! --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;delete&lt;/span&gt; &lt;span style="color: #ff0000"&gt;file&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.result.file.fullpath}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;delete&lt;/span&gt; &lt;span style="color: #ff0000"&gt;file&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.report.file.fullpath}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;if&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;equals&lt;/span&gt; &lt;span style="color: #ff0000"&gt;arg1&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${test.case.to.perform}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;arg2&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;then&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000"&gt;message&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;All send cases in dir ${test.cases.to.run.basepath} will be run&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt; &lt;span style="color: #ff0000"&gt;target&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;run_jmeters&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;loadtests.basepath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${test.cases.to.run.basepath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;loadtests.extension&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${testcase.receive.extension}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.result.file.fullpath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;then&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;else&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000"&gt;message&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Only one testcase is run ${test.case.to.perform}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt; &lt;span style="color: #ff0000"&gt;target&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;run_jmeter&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmx.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${test.cases.to.run.basepath}/${test.case.to.perform}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;          &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.result.file.fullpath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;else&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;if&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt; &lt;span style="color: #ff0000"&gt;target&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;make_report&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.result.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.result.file.fullpath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;jmeter.report.file.fullpath&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmeter.receive.report.file.fullpath}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;antcall&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;run_jmeter&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;description&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;run jmeter&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000"&gt;message&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;Starting to run test: ${jmx.file.fullpath}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!-- ant call param --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;copy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;file&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmx.file.fullpath}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;tofile&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmx.file.fullpath}.${target.os}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;overwrite&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;if&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;equals&lt;/span&gt; &lt;span style="color: #ff0000"&gt;arg1&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${target.os}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;arg2&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;linux&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;then&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;echo&lt;/span&gt; &lt;span style="color: #ff0000"&gt;message&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot; Replacing paths in jmeter data to match the target file system ${target.os}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 10px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #fbfbfb"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;replace&lt;/span&gt; &lt;span style="color: #ff0000"&gt;file&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${jmx.file.fullpath}.${target.os}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;token&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${windows.local.basepath.location}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;${linux.local.basepath.location
