Q: Cleaning Mods with TESPCD

Post » Tue Aug 17, 2010 12:21 am

Here's a revised version of the TES3CMD.bat file, which does two things differently...

  • It now updates the masters of the plugin after cleaning it so that you don't get Yellow and/or Orange boxes in Wrye Mash telling you the masters don't match. If you don't use Wrye Mash (OMG!! Why not!!?), then this will prevent you from getting the, "One or more plugins could not find the correct versions of the master files they depend on..." error when loading Morrowind.

  • It now copies backups of the 'dirty' plugins and the -cleaned.log files into the \Data Files\tes3cmd\backups folder by default, but you can modify the paths to your own preference. Couldn't get the --backup-dir option working; so this is a compromise, but it actually gives you a bit more flexibility with both the backups and logs. :shrug:

@ECHO off:STARTCLSREM *******************************************************************************REM *  "Drag-and-Droppable" batch file...REM *REM *  1. Copy TES3CMD.exe to \Morrowind\Data Files directoryREM *  2. Create a batch file with this code in the \Morrowind\Data Files directoryREM *  3. OPTIONAL -- Create a SHORTCUT to this batch file on your desktopREM *  4. Drag ESP/M files onto the desktop shortcut or the actual batch fileREM *REM *  The new 'clean' plugin will take the place of the old 'dirty' plugin. The oldREM *    'dirty' plugin will be backed up to \Date Files\tes3cmd\backups. A log fileREM *    called '-cleaned.log' will be created in \backups as well.REM *REM *  Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *    to Remove required GMSTs.REM *******************************************************************************REM *******************************************************************************REM *  Always clean in this order...REM *REM *  1. Official Masters (Tribunal.esm and Bloodmoon.esm)REM *  2. Mod Masters (e.g. GIANTS.esm, etc.)REM *  3. Mod Plugins relying on Official or Mod MastersREM *  4. Mod Plugins that are a Master to another PluginREM *  5. All other Plugins with or without Master or Plugin Master dependenciesREM *REM *  DO NOT CLEAN Plugins that act as "control files" for other Masters ... yet.REM *    Still working on that last one... have to ignore duplicates related to theREM *    mod Master but still clean the duplicates related to Official Masters...REM *    An example of this would be the GIANTS Ultimate Control File ESP.REM *******************************************************************************REM *******************************************************************************REM *  Disable default ESP/M and Log output backup directory...REM *REM *  The Backup ESP/M and Log Output files directory is now set to the defaultREM *     \Data Files\tes3cmd\backups. All original 'dirty' mods will be moved toREM *     this location along with the -cleaned.log files. If you want to turn thisREM *     feature off and leave the backup and the log files in the originalREM *     location...REM *REM *  1. Delete the three (3) instances of '--hide-backups' in each tes3cmd lineREM *  2. Change all four (4) instances of '%LOG%' to '%1'REM *  3. Just ignore the 'Set LOG="%cd%\tes3cmd\backups\%~nx1"' line in this case.REM *******************************************************************************REM *******************************************************************************REM * DO NOT EDIT THIS DEFAULT PATHSET DEF=%cd%\tes3cmd\backups\REM * DO NOT EDIT THIS DEFAULT PATHREM *******************************************************************************REM *******************************************************************************REM *  Change default ESP/M backup and log file directories...REM *REM *  Replace %DEF% with the path(s) where you wish to use to store your ESP/MREM *     backups and/or your -cleaned.log files. Otherwise, leave as-is for default.REM *REM *  Example: SET BKP=C:\Games\Bethesda Softworks\MW ESPM Backups\REM *  Exmaple: SET LOG=C:\Games\Bethesda Softworks\Log Files\REM *******************************************************************************SET BKP=%DEF%SET LOG=%DEF%REM *******************************************************************************REM *  If user-defined path does not exist yet, create it.REM *  Append user-defined path statement with the Plugin.name.REM *  Append default path statement with the Plugin.name.REM *******************************************************************************IF NOT EXIST %BKP% MD %BKP%IF NOT EXIST %LOG% MD %LOG%SET DEF="%DEF%\%~nx1"SET BKP="%BKP%\%~nx1"SET LOG="%LOG%\%~nx1"REM *******************************************************************************REM *  Check for Morrowind.esm, Tribunal.esm, and Bloodmoon.esmREM *  If none of these, then "standard" ESP/M cleaning occurs...REM *******************************************************************************IF "%~nx1" == "Morrowind.esm" GOTO MORRIF "%~nx1" == "Tribunal.esm" GOTO NO_GMSTIF "%~nx1" == "Bloodmoon.esm" GOTO NO_GMSTGOTO GMSTREM *******************************************************************************REM *  If file is Morrowind.esm ...REM *  Cannot clean Morrowind.esm -- There is no master above it to check against!!REM *******************************************************************************:MORRECHO You cannot clean %~nx1! >> %LOG%-cleaned.logECHO ******************************* >> %LOG%-cleaned.logGOTO DISPPAUSEGOTO ENDREM *******************************************************************************REM *  If file is Tribunal.esm or Bloodmoon.esm ...REM *  Add --debug after "clean" in the line below to enable verbose debugging mode.REM *******************************************************************************:NO_GMSTECHO Detected %~nx1 . . .ECHO GMSTs will NOT be cleaned . . .tes3cmd clean --hide-backups --instances --cell-params --dups --junk-cells --replace %1 > %LOG%-cleaned.log 2>&1ECHO ********** TES3CMD Clean Plugin Process Completed ********** >> %LOG%-cleaned.logGOTO POST REM *******************************************************************************REM *  If file is any other plugin or master ...REM *  Add --debug after "clean" in the line below to enable verbose debugging mode.REM *******************************************************************************:GMSTECHO Cleaning plugin %~nx1 . . .tes3cmd clean --hide-backups --replace %1 > %LOG%-cleaned.log 2>&1ECHO ********** TES3CMD Clean Plugin Process Completed ********** >> %LOG%-cleaned.logGOTO POSTREM *******************************************************************************REM *  Update masters and output results of tes3cmd cleaning to CMD window.REM *  Append to -cleaned.log output file.REM *******************************************************************************:POSTECHO Updating masters for %~nx1 . . .ECHO ********** TES3CMD Update Masters Process Started ********** >> %LOG%-cleaned.logECHO ** If no data follows, Masters did not need to be updated ** >> %LOG%-cleaned.logtes3cmd header --hide-backups --update-masters %1 >> %LOG%-cleaned.log 2>&1ECHO ********* TES3CMD Update Masters Process Completed ********* >> %LOG%-cleaned.logREM *******************************************************************************REM *  Check to see if user changed default ESP/M backup path, and if so, move fileREM *    to the new location. Log files are already created in the user-defined path.REM *******************************************************************************IF NOT %BKP% == %DEF% MOVE %DEF% %BKP%REM *******************************************************************************REM *  Check if cleaned plugin is a Master (ESM), then check if tes3cmd has cachedREM *     it already. If so, delete master.esm.cache file.REM *******************************************************************************IF NOT "%~x1" == ".esm" GOTO DISPIF NOT EXIST "%cd%\tes3cmd\%~nx1.cache" GOTO DISPDEL "%cd%\tes3cmd\%~nx1.cache"REM *******************************************************************************REM *  Outputting results to file via "> %1-cleaned.log 2>&1" as above will not printREM *    to screen without explicitly using 'type' command.REM *******************************************************************************:DISPTYPE %LOG%-cleaned.logECHO TES3CMD Clean Plugin and Update Masters processes have completed . . .PAUSEGOTO ENDREM *******************************************************************************REM *  End of batch commands, exit CMD window.REM *******************************************************************************:END


Let me know if you have any problems with it. Unless any are reported, I'm going to focus on helping Yakoby play around with integrating features into Wrye Mash 85 Stand Alone, including these kinds of features for tes3cmd, but this should hold you over for now.

Thanks!

-RMWChaos
User avatar
Ebou Suso
 
Posts: 3604
Joined: Thu May 03, 2007 5:28 am

Post » Tue Aug 17, 2010 9:13 am

Cool thanks - testing now.

Where does it put the log? No log found. I did find the backups in the cmd folder (man I wish tes4edit did it that way).

Also will this update masters even if it finds that no cleaning is necessary? [edit] YES IT DOES! cool.

===========

[edit 2]
Well hmm so the orange with the http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=2556 (replacement esm and new plugin) are orange when loaded with the cleaned Tribunal/Bloodmoon esm even prior to cleaning them in anyway.

Cleaning them with this does not change their color - although I tested that others did change to green!

Updating in masters window does.

==========
[edit 2] found another where the yellow remained: http://mw.modhistory.com/download--2136

... with these not trying to complain - just give feedback.

The log I think would be good to have even if placed in the backup folder.
User avatar
Russell Davies
 
Posts: 3429
Joined: Wed Nov 07, 2007 5:01 am

Post » Mon Aug 16, 2010 8:24 pm

RMWChaos, wow...nice work. You make me feel embarrased at my rather simple batch file (my DOS-fu is a little rusty). I'm just to see my favorite tool getting some love. Can't wait to give this a try.
User avatar
CYCO JO-NATE
 
Posts: 3431
Joined: Fri Sep 21, 2007 12:41 pm

Post » Tue Aug 17, 2010 7:15 am

RMWChaos, wow...nice work. You make me feel embarrased at my rather simple batch file (my DOS-fu is a little rusty). I'm just to see my favorite tool getting some love. Can't wait to give this a try.

Thank you! That's why I do it, for the praise ... er ... no wait, for the satisfaction of a job well done. Yeah, that's it. :whistling:

No, don't feel embarrassed at all. For one, your batch got me thinking about it and led to this, and two, I would be embarrassed to tell you how much time I actually spent coding and testing what most professional coders (which I am most definitely NOT) would consider a very simple set of batch commands.

Besides, when trying to remember all those arcane DOS commands, just remember ... "Google is your friend" :hugs:

-RMWChaos
User avatar
YO MAma
 
Posts: 3321
Joined: Thu Dec 21, 2006 8:24 am

Post » Mon Aug 16, 2010 7:25 pm

Cool thanks - testing now.

Where does it put the log? No log found. I did find the backups in the cmd folder (man I wish tes4edit did it that way).

Also will this update masters even if it finds that no cleaning is necessary? [edit] YES IT DOES! cool.

===========

[edit 2]
Well hmm so the orange with the http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=2556 (replacement esm and new plugin) are orange when loaded with the cleaned Tribunal/Bloodmoon esm even prior to cleaning them in anyway.

Cleaning them with this does not change their color - although I tested that others did change to green!

Updating in masters window does.

==========
[edit 2] found another where the yellow remained: http://mw.modhistory.com/download--2136

... with these not trying to complain - just give feedback.

The log I think would be good to have even if placed in the backup folder.

As far as I can tell, the reason for this is because both plugins you refer to have Tribunal.esm and/or Bloodmoon.esm as a masters.

tes3cmd has internal code that tells it what the file lengths are supposed to be for the 3 official masters, rather than basing it off of the current lengths. So if you've cleaned Bloodmoon.esm and Tribunal.esm, tes3cmd will not update those two in plugin headers, and you will see it as yellow or orange in Mash. Updating the masters in Mash will correct this.

This will happen for any mod that has Tribunal and Bloodmoon as masters. Working on a fix to bypass this now...
User avatar
Sebrina Johnstone
 
Posts: 3456
Joined: Sat Jun 24, 2006 12:58 pm

Post » Tue Aug 17, 2010 6:14 am

[edit 1]Well hmm so the orange with the http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=2556 (replacement esm and new plugin) are orange when loaded with the cleaned Tribunal/Bloodmoon esm even prior to cleaning them in anyway.

Cleaning them with this does not change their color - although I tested that others did change to green!

Updating in masters window does.

==========
[edit 2] found another where the yellow remained: http://mw.modhistory.com/download--2136

... with these not trying to complain - just give feedback.

The log I think would be good to have even if placed in the backup folder.


Okay, my first assumptions here were wrong. The problem is NOT tes3cmd at all. The masters are being updated by the size of the Tribunal.esm and Bloodmoon.esm files in "\Data Files" as one would expect.

The problem, it turns out, is Wrye Mash not refreshing the Mods Tab all the time. Try this ...

  • Put 'dirty' CNS_BM_Blizzard.esp in \Data Files
  • Check that Mash shows a yellow checkbox on it, and that is it out of sync with Tribunal and Bloodmoon masters
  • Run the batch file
  • Check that Mash now shows a green checkbox on it (it may not)
  • Minimize then maximize Mash and check again (still might not show green)
  • Close then reopen Mash and check one last time (it now should definitely be green)

Not sure what the workaround would be here. I've tried a couple things, but nothing seems to work consistently. May need Yako to take a closer look at the Mash refresh Mods code. I'll take a look at it myself later on.

In the meantime, I did end up making many changes to the batch file to improve readability of the log file.

Also, the reason you couldn't find the log file is because I accidently left the test paths in there rather than the default paths. If you look under C:\Temp\Test*, you will probably find them there right now. Sorry about that.

In this batch file, the backup ESP/M and log file folder has been set to the default "\Data Files\tes3cmd\backups"...

@ECHO OFF:STARTCLSREM *********************************************************************************REM *****	"Drag-and-Droppable" TES3CMD Cleaning Batch / CMD File		*****REM *****		by: RMWChaos	ver. 2011.05.12.13.22			*****REM *****		  original concept by: Pinkertonius			*****REM *********************************************************************************REM *REM *	TO SETUP ...REM *REM *		1. Download TES3CMD v0.37o from:REM *		    http://mlox.googlecode.com/files/tes3cmd-0.37o-2010.08.20.7zREM *REM *		2. Unzip TES3CMD to your "\Morrowind\Data Files" directoryREM *REM *		3. Create a new "tes3cmd Cleaner.txt" file in the same directoryREM *REM *		4. Copy the entire contents of this code into the text file and save itREM *REM *		5. Rename the text file with a ".bat" or ".cmd" extension (either works)REM *REM *		6. *OPTIONAL* Create a SHORTCUT to the batch file on your desktopREM *REM *		7. *OPTIONAL* Add "--debug" after "tes3cmd clean" and/or "tes3cmd header"REM * 		    in the lines below to enable verbose logging mode. **WARNING** ThisREM *		    can produce a VERY LARGE log file that cannot always be opened in aREM *		    standard editor like Wordpad, Notepad, or even Notepad++.REM *REM *********************************************************************************REM *REM *	The cleaned plugin will take the place of the old 'dirty' plugin and the oldREM *		plugin will be backed up to "\Data Files\tes3cmd\backups" by default. AREM *		log file called "-cleaned.log" will also be created in theREM *		same folder by default.REM *REM *********************************************************************************REM *REM *	Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *		to remove required GMSTs, and tes3cmd may ignore (not clean) other modsREM *		 based on its own internal code.REM *REM *********************************************************************************REM *REM *	If a plugin has required masters, they MUST already be located in /DATA FILESREM *		or both cleaning and updating masters will fail!REM *REM *********************************************************************************REM *********************************************************************************REM *****				MOD CLEANING STEPS			*****REM *********************************************************************************REM *REM *	First, make sure the mod master dependencies are already located in theREM *		"\Data Files" folder, or THE MOD WILL NOT BE CLEANED !!REM *REM *	TO RUN ...REM *		Drag ESP/M files onto the shortcut, .bat, or .cmd file to clean mods.REM *REM *	CLEANING ORDER ...REM * 		1. Official masters (i.e. Tribunal.esm and Bloodmoon.esm)REM * 		2. Mod masters (e.g. GIANTS.esm, etc.)REM * 		3. Mod plugins relying on Official or Mod MastersREM * 		4. Mod plugins that are a Master to another PluginREM * 		5. All other plugins with or without master dependenciesREM *REM *	DO NOT CLEAN plugins that act as "control files" for other masters as it willREM *		remove intentional duplicates meant to prevent other mods from over-REM *		writing required records in the master. An example of this would be theREM *		GIANTS Ultimate Control File plugin.REM *REM *	A *possible* fix to this would be to create a "blank" master and rename it toREM *		the plugin master dependency during cleaning. This would allow the modREM *		to be cleaned against official masters, but not the mod master(s).REM *********************************************************************************REM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************	SET TIM1=%date% %time: =0%	SET T3C=%cd%\tes3cmd	SET DEF=%T3C%\backups	SET HID=--hide-backups	FOR %%A IN (Tribunal.esm) DO SET TBL=%%~zA	FOR %%A IN (Bloodmoon.esm) DO SET BML=%%~zAREM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************REM *********************************************************************************REM *****			USER CUSTOMIZABLE SETTINGS			*****REM *********************************************************************************REM *REM *	If you want to use the default tes3cmd behavior of storing ESP/M backups andREM *		log files in the same directory as the original plugin change either orREM *		both of the following to equal 0 (default is 1)...REM *REM *		SET BDE=0  ; this enables the default tes3cmd ESP/M backup behaviorREM *		SET LDE=0  ; this enables the default tes3cmd log file behaviorREM *REM *********************************************************************************REM *REM *	If you want to change the default ESP/M backups or log file directory locationREM *		"\Data Files\tes3cmd\backups", set either or both of the following to yourREM *		preferred path (default is %DEF%)...REM *REM *		SET BKP=C:\Your Preferred\MW ESPM Backup Path   ; no quotesREM *		SET LOG=C:\Your Preferred\tes3cmd Logfile Path  ; no quotesREM *REM *	NOTE: DO NOT CHANGE the "SET DEF=" statement above thinking it is a shortcutREM *		to changing both paths. Doing so will break the code during the copyREM *		ESP/M backup to user-defined path phase, which checks if DEF and BKPREM *		variables match first. They MUST NOT MATCH in order to move the file.REM *REM *********************************************************************************REM *REM *	By default, tes3cmd will update the plugin masters and header record count.REM *		To disable this, change the following setting to 0 (default is 1)...REM *REM *		SET SYN=0  ; this will DISABLE the automatic syncrhonizing featureREM *REM *********************************************************************************REM *********************************************************************************REM *****		--> START USER CUSTOMIZABLE SETTINGS <--		*****REM *********************************************************************************SET BDE=1SET LDE=1SET BKP=%DEF%SET LOG=%DEF%SET SYN=1REM *********************************************************************************REM *****		--> END USER CUSTOMIZABLE SETTINGS <--			*****REM *********************************************************************************REM *********************************************************************************REM * 	If Backup Directory Enabled, check if backup path does not exist & create it.REM * 	If Log Directory Enabled, check if log path does not exist & create it.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT EXIST "%BKP%" MD "%BKP%") ELSE (	SET HID=	SET BKP=%cd%	SET DEF=%cd%)IF NOT %LDE% == 0 (	IF NOT EXIST "%LOG%" MD "%LOG%") ELSE (	SET LOG=%cd%)REM *********************************************************************************REM *	Append path statements with the Plugin.name ...REM *********************************************************************************SET DEF="%DEF%\%~nx1"SET T3C="%T3C%\%~nx1"SET BKP="%BKP%\%~nx1"SET LOG="%LOG%\%~nx1-cleaned.log"REM *********************************************************************************REM *	Initiate log file with timestamp ...REM *	Append original plugin header contents to log file ...REM *********************************************************************************ECHO Cleaning of %~nx1 has begun ...ECHO You may not see activity for some time, especially on larger mods.ECHO Started %TIM1% > %LOG%@ECHO: >> %LOG%ECHO Original plugin (pre-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %~nx1 >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Check for Morrowind.esm, Tribunal.esm, and Bloodmoon.esmREM *	If none of these, then "standard" ESP/M cleaning occurs...REM *********************************************************************************IF "%~nx1" == "Morrowind.esm" GOTO MORRECHO Cleaning %~nx1 . . . >> %LOG%@ECHO: >> %LOG%IF "%~nx1" == "Tribunal.esm" GOTO NO_GMSTIF "%~nx1" == "Bloodmoon.esm" GOTO NO_GMSTGOTO GMSTREM *********************************************************************************REM *	If file is Morrowind.esm ...REM *	Cannot clean Morrowind.esm -- There is no master to check against !!REM *********************************************************************************:MORRECHO You cannot clean %~nx1 !! >> %LOG%@ECHO: >> %LOG%GOTO DISPREM *********************************************************************************REM *	If file is Tribunal.esm or Bloodmoon.esm ...REM *	Use %1 for full path to bypass tes3cmd "ignore official masters" code.REM *********************************************************************************:NO_GMSTECHO GMSTs will NOT be cleaned . . . >> %LOG%@ECHO: >> %LOG%tes3cmd clean %HID% --instances --cell-params --dups --junk-cells --replace %1 >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%GOTO POSTREM *********************************************************************************REM *	If file is any other plugin or master ...REM *	Use %~nx1 to allow tes3cmd code to ignore plugins in "no clean" list ...REM *********************************************************************************:GMSTtes3cmd clean %HID% --replace %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Synchronize plugin -- update masters and header record count ...REM *	For plugins with Tribunal.esm and/or Bloodmoon.esm, override tes3cmd code,REM *	    replace official masters length value with current values ...REM *********************************************************************************:POSTIF NOT %SYN% == 1 ECHO Mod synchronization disabled by user. >> %LOG%@ECHO: >> %LOG%IF NOT %SYN% == 0 (	ECHO Syncrhonizing mod - update masters and header . . . >> %LOG%	@ECHO: >> %LOG%	tes3cmd header %HID% --synchronize %~nx1 >> %LOG% 2>&1	@ECHO: >> %LOG%	ECHO Synchronizing complete. >> %LOG%)@ECHO: >> %LOG%REM *********************************************************************************REM *	Workaround for Wrye Mash refresh delay not showing updated masters ...REM *********************************************************************************ECHO Force Wrye Mash refresh . . . >> %LOG%SET TIM2=%date% %time: =0%tes3cmd header %HID% --description "+ Cleaned by tes3cmd %TIM2%" %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%REM *********************************************************************************REM *	Check to see if user changed default ESP/M backup path, and if so, move fileREM *	    to the new location ...REM *	Log files are already created in the user-defined path; nothing to do here.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT %BKP% == %DEF% MOVE %DEF% %BKP%)ECHO If changes were made, a backup of %~nx1 has been stored here: >> %LOG%@ECHO: >> %LOG%ECHO %BKP% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Append cleaned & updated plugin header contents to end of log ...REM *********************************************************************************ECHO New plugin (post-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%REM *********************************************************************************REM *	Display location of log file ...REM *********************************************************************************:DISPECHO A log file of all actions taken can be found here: >> %LOG%@ECHO: >> %LOG%ECHO %LOG% >> %LOG%@ECHO: >> %LOG%SET TIM3=%date% %time: =0%ECHO Finished %TIM3% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Output log file to console and wait for user input ...REM *********************************************************************************TYPE %LOG%PAUSEREM *********************************************************************************REM *****		End of batch commands, exit CMD window.			*****REM *********************************************************************************:END


Test it out and let me know if you have any problems. Remember, you'll probably still have to close and reopen Mash after cleaning to refresh the Mods tab for now.

Thanks,

-RMWChaos
User avatar
Charles Weber
 
Posts: 3447
Joined: Wed Aug 08, 2007 5:14 pm

Post » Tue Aug 17, 2010 10:01 am

Yes Opening and closing mash did indeed result in green!

And I also found under the temp folder on C a temp6 folder that has backups of all the esm/p that I had been cleaning.

Glad that was discovered and sorted out. I need to keep my OS drive clean and tidy.

Thanks and thanks!
User avatar
Sarah Knight
 
Posts: 3416
Joined: Mon Jun 19, 2006 5:02 am

Post » Tue Aug 17, 2010 2:04 am

Yes Opening and closing mash did indeed result in green!

And I also found under the temp folder on C a temp6 folder that has backups of all the esm/p that I had been cleaning.

Glad that was discovered and sorted out. I need to keep my OS drive clean and tidy.

Thanks and thanks!

Glad that worked, and given that it did, here's an updated batch with a very hackish workaround for the Mods Tab refresh problem.

Also added some additional user-define-able settings so that you can tailor what it does.

Hopefully, this will make cleaning with tes3cmd a bit more user-friendly until (hopefully) Mash can be updated with some kind of fix for auto-refreshing the Mods tab, or at the very least, a manual refresh method ala-Windows Folders refresh.

Let me know how this works for you.

Regards,

-RMWChaos

@ECHO OFF:STARTCLSREM *********************************************************************************REM *****	"Drag-and-Droppable" TES3CMD Cleaning Batch / CMD File		*****REM *****		by: RMWChaos	ver. 2011.05.12.13.22			*****REM *****		  original concept by: Pinkertonius			*****REM *********************************************************************************REM *REM *	TO SETUP ...REM *REM *		1. Download TES3CMD v0.37o from:REM *			http://mlox.googlecode.com/files/tes3cmd-0.37o-2010.08.20.7zREM *REM *		2. Unzip TES3CMD to your "\Morrowind\Data Files" directoryREM *REM *		3. Create a new "tes3cmd Cleaner.txt" file in the same directoryREM *REM *		4. Copy the entire contents of this code into the text file and save itREM *REM *		5. Rename the text file with a ".bat" or ".cmd" extension (either works)REM *REM *		6. *OPTIONAL* Create a SHORTCUT to the batch file on your desktopREM *REM *		7. *OPTIONAL* Add "--debug" after "tes3cmd clean" and/or "tes3cmd header"REM * 			in the lines below to enable verbose logging mode. **WARNING** ThisREM *			can produce a VERY LARGE log file that cannot always be opened in aREM *			standard editor like Wordpad, Notepad, or even Notepad++.REM *REM *********************************************************************************REM *REM *	The cleaned plugin will take the place of the old 'dirty' plugin and the oldREM *		plugin will be backed up to "\Data Files\tes3cmd\backups" by default.REM *REM *	If the mod is both cleaned and synchronized, a second backup will be createdREM *		appended with "~1". The first backup is the original 'dirty' mod, and theREM *		second ("~1") is the cleaned mod WITHOUT header synchronization (updatedREM *		masters and header record count).REM *REM *	A log file called "-cleaned.log" will also be created in theREM *		same "\Data Files\tes3cmd\backups" folder by default.REM *REM *********************************************************************************REM *REM *	Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *		to remove required GMSTs, and tes3cmd may ignore (not clean) other modsREM *		 based on its own internal code.REM *REM *********************************************************************************REM *REM *	If a plugin has required masters, they MUST already be located in /DATA FILESREM *		or both cleaning and updating masters will fail!REM *REM *********************************************************************************REM *********************************************************************************REM *****			MOD CLEANING STEPS				*****REM *********************************************************************************REM *REM *	First, make sure the mod master dependencies are already located in theREM *		"\Data Files" folder, or THE MOD WILL NOT BE CLEANED !!REM *REM *	TO RUN ...REM *		Drag ESP/M files onto the shortcut, .bat, or .cmd file to clean mods.REM *REM *	CLEANING ORDER ...REM * 		1. Official masters (i.e. Tribunal.esm and Bloodmoon.esm)REM * 		2. Mod masters (e.g. GIANTS.esm, etc.)REM * 		3. Mod plugins relying on Official or Mod MastersREM * 		4. Mod plugins that are a Master to another PluginREM * 		5. All other plugins with or without master dependenciesREM *REM *	DO NOT CLEAN plugins that act as "control files" for other masters as it willREM *		remove intentional duplicates meant to prevent other mods from over-REM *		writing required records in the master. An example of this would be theREM *		GIANTS Ultimate Control File plugin.REM *REM *	A *possible* fix to this would be to create a "blank" master and rename it toREM *		the plugin master dependency during cleaning. This would allow the modREM *		to be cleaned against official masters, but not the mod master(s).REM *********************************************************************************REM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************	SET T3C=%cd%\tes3cmd	SET DEF=%T3C%\backups	SET HID=--hide-backups	FOR %%A IN (Tribunal.esm) DO SET TBL=%%~zA	FOR %%A IN (Bloodmoon.esm) DO SET BML=%%~zAREM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************REM *********************************************************************************REM *****	EDIT USER-DEFINED SETTINGS BELOW THE REMARKS SECTION		*****REM *********************************************************************************REM *REM *	If you want to use the default tes3cmd behavior of storing ESP/M backups andREM *		log files in the same directory as the original plugin change either orREM *		both of the following to equal 0 (default is 1)...REM *REM *			SET BDE=0	;	this enables the default tes3cmd ESP/M backup behaviorREM *			SET LDE=0	;	this enables the default tes3cmd log file behaviorREM *REM *********************************************************************************REM *REM *	If you want to change the default ESP/M backups or log file directory locationREM *		"\Data Files\tes3cmd\backups", set either or both of the following to yourREM *		preferred path (default is %DEF%)...REM *REM *			SET BKP=C:\Your Preferred\MW ESPM Backup Path	;	no quotesREM *			SET LOG=C:\Your Preferred\tes3cmd Logfile Path	;	no quotesREM *REM *	NOTE: DO NOT CHANGE the "SET DEF=" statement above thinking it is a shortcutREM *			to changing both paths. Doing so will break the code during the copyREM *			ESP/M backup to user-defined path phase, which checks if DEF and BKPREM *			variables match first. They MUST NOT MATCH in order to move the file.REM *REM *********************************************************************************REM *REM *	By default, tes3cmd will update the plugin masters and header record count.REM *		To disable this, change the following setting to 0 (default is 1)...REM *REM *			SET SYN=0	;	this will DISABLE the automatic syncrhonizing featureREM *REM *********************************************************************************REM *REM *	To workaround a refresh issue Wrye Mash has with the Mods Tab, the cleanedREM *		mod will be moved to "\Data Files\tes3cmd" and prompt the user to touchREM *		the Wrye Mash window and confirm the mod has been removed from the list.REM *		The mod will then be moved back to "\Data Files", and the Mods Tab willREM *		update properly.REM *REM *	If you want to disable this function and refresh the Mods Tab manually, setREM *		the following equal to 0 (default is 1)...REM *REM *			SET WKA=0	;	this will DISABLE the workaround for Mods Tab refreshREM *REM *********************************************************************************REM *REM *	By default, the log report will display on-screen after all cleaning andREM *		synchronization activities have completed. If you want to disable thisREM *		functionality and simply close the command window after cleaning a mod,REM *		set the following equal to 0 (default is 1)...REM *REM *			SET DSP=0	;	this will DISABLE display of the log file on-screenREM *REM *********************************************************************************REM *********************************************************************************REM *****		--> BEGIN USER-DEFINED SETTINGS <--			*****REM *********************************************************************************	SET BDE=1	SET LDE=1	SET BKP=%DEF%	SET LOG=%DEF%	SET SYN=1	SET WKA=1	SET DSP=1REM *********************************************************************************REM *****		--> END USER-DEFINED SETTINGS <--			*****REM *********************************************************************************REM *********************************************************************************REM *****		CONFIRM USER-DEFINED SETTINGS				*****REM *********************************************************************************IF NOT %BDE% == 1 (	ECHO Backups will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%BKP%" == "%DEF%" (		ECHO Mod backups will be stored in a user-defined path.	) ELSE (		ECHO Mod backups will be stored in the default directory.	))@ECHO:IF NOT %LDE% == 1 (	ECHO Log files will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%LOG%" == "%DEF%" (		ECHO Log files will be stored in in a user-defined path.	) ELSE (		ECHO Log files will be stored in the default directory.	))@ECHO:IF NOT %SYN% == 1 (	ECHO Mod syncrhonization is DISABLED.) ELSE (	ECHO Mod synchronization is ENABLED.)@ECHO:IF NOT %WKA% == 1 (	ECHO Wrye Mash Mods Tab refresh workaround is DISABLED.) ELSE (	ECHO Wrye Mash Mods Tab refresh workaround is ENABLED.)@ECHO:@ECHO:REM *********************************************************************************REM * 	If Backup Directory Enabled, check if backup path does not exist & create it.REM * 	If Log Directory Enabled, check if log path does not exist & create it.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT EXIST "%BKP%" MD "%BKP%") ELSE (	SET HID=	SET BKP=%cd%	SET DEF=%cd%)IF NOT %LDE% == 0 (	IF NOT EXIST "%LOG%" MD "%LOG%") ELSE (	SET LOG=%cd%)REM *********************************************************************************REM *	Append path statements with the Plugin.name ...REM *********************************************************************************SET DEF="%DEF%\%~nx1"SET T3C="%T3C%\%~nx1"SET BKP="%BKP%\%~nx1"SET LOG="%LOG%\%~nx1-cleaned.log"REM *********************************************************************************REM *	Initiate log file with timestamp ...REM *	Append original plugin header contents to log file ...REM *********************************************************************************ECHO Cleaning of %~nx1 has begun ...@ECHO:ECHO You may not see activity for someECHO  time, especially for larger mods . . .@ECHO:@ECHO:ECHO Started %TIME% > %LOG%@ECHO: >> %LOG%ECHO Original plugin (pre-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %~nx1 >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Check for Morrowind.esm, Tribunal.esm, and Bloodmoon.esmREM *	If none of these, then "standard" ESP/M cleaning occurs...REM *********************************************************************************IF "%~nx1" == "Morrowind.esm" GOTO MORRECHO Cleaning %~nx1 . . . >> %LOG%@ECHO: >> %LOG%IF "%~nx1" == "Tribunal.esm" GOTO NO_GMSTIF "%~nx1" == "Bloodmoon.esm" GOTO NO_GMSTGOTO GMSTREM *********************************************************************************REM *	If file is Morrowind.esm ...REM *	Cannot clean Morrowind.esm -- There is no master to check against !!REM *********************************************************************************:MORRECHO You cannot clean %~nx1 !! >> %LOG%@ECHO: >> %LOG%GOTO DISPREM *********************************************************************************REM *	If file is Tribunal.esm or Bloodmoon.esm ...REM *	Use %1 for full path to bypass tes3cmd "ignore official masters" code.REM *********************************************************************************:NO_GMSTECHO GMSTs will NOT be cleaned . . . >> %LOG%@ECHO: >> %LOG%tes3cmd clean %HID% --instances --cell-params --dups --junk-cells --replace %1 >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%GOTO POSTREM *********************************************************************************REM *	If file is any other plugin or master ...REM *	Use %~nx1 to allow tes3cmd code to ignore plugins in "no clean" list ...REM *********************************************************************************:GMSTtes3cmd clean %HID% --replace %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Synchronize plugin -- update masters and header record count ...REM *	For plugins with Tribunal.esm and/or Bloodmoon.esm, override tes3cmd code,REM *	    replace official masters length value with current values ...REM *********************************************************************************:POSTIF NOT %SYN% == 1 ECHO Mod synchronization disabled by user. >> %LOG%@ECHO: >> %LOG%IF NOT %SYN% == 0 (	ECHO Syncrhonizing mod - update masters and header . . . >> %LOG%	@ECHO: >> %LOG%	tes3cmd header %HID% --synchronize %~nx1 >> %LOG% 2>&1	@ECHO: >> %LOG%	ECHO Synchronizing complete. >> %LOG%)@ECHO: >> %LOG%REM *********************************************************************************REM *	Update header description with "cleaned" message...REM *	Workaround for Wrye Mash refresh delay not showing updated masters ...REM *********************************************************************************ECHO Update header description . . . >> %LOG%SET TIM2=%date% %time: =0%tes3cmd header %HID% --description "+ Cleaned by tes3cmd %TIM2%" %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%IF %WKA% == 1 (	ECHO Force Wrye Mash refresh . . . >> %LOG%	MOVE %1 %T3C% >> %LOG% 2>&1	CLS	@ECHO:	ECHO *** YOU MUST DO THIS OR WRYE MASH WILL 	ECHO NOT REFRESH THE MODS TAB PROPERLY! ***	@ECHO:	@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO dirty mod has been removed from the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, and	PAUSE	CLS	MOVE %T3C% %1 >> %LOG% 2>&1		@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO cleaned mod has been added to the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, and	PAUSE)REM *********************************************************************************REM *	Check to see if user changed default ESP/M backup path, and if so, move fileREM *	    to the new location ...REM *	Log files are already created in the user-defined path; nothing to do here.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT %BKP% == %DEF% MOVE %DEF% %BKP%)ECHO If changes were made, a backup of %~nx1 has been stored here: >> %LOG%@ECHO: >> %LOG%ECHO %BKP% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Append cleaned & updated plugin header contents to end of log ...REM *********************************************************************************ECHO New plugin (post-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%REM *********************************************************************************REM *	Display location of log file ...REM *********************************************************************************:DISPECHO A log file of all actions taken can be found here: >> %LOG%@ECHO: >> %LOG%ECHO %LOG% >> %LOG%@ECHO: >> %LOG%ECHO Finished %TIME% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Output log file to console and wait for user input ...REM *********************************************************************************IF %DSP% == 1 (	CLS	TYPE %LOG%	PAUSE)REM *********************************************************************************REM *****		End of batch commands, exit CMD window.			*****REM *********************************************************************************:END


Enjoy ... :tes:
User avatar
Marcin Tomkow
 
Posts: 3399
Joined: Sun Aug 05, 2007 12:31 pm

Post » Tue Aug 17, 2010 2:42 am

Wow - code much?

That is crazy cool.

Thanks. I will give this a whirl.

=================

So how do I turn off the needing to click on and refresh windows? Could all that be set to happen automatically?

thanks
User avatar
Brentleah Jeffs
 
Posts: 3341
Joined: Tue Feb 13, 2007 12:21 am

Post » Tue Aug 17, 2010 7:06 am

Wow - code much?

That is crazy cool.

Thanks. I will give this a whirl.

=================

So how do I turn off the needing to click on and refresh windows? Could all that be set to happen automatically?

thanks

It's a hobby. :geek:

The EDIT USER-DEFINED SETTINGS section allows you to make changes that will eliminate the need to interact with the code entirely; however, doing so will disable certain functions ...

  • Change "WKA=1" to "WKA=0" in the EDIT USER-DEFINED SETTINGS section. This will disable the workaround completely, however, and the only way to get Wrye Mash to properly refresh the Mods Tab is to restart it. Believe me, I tried everything else I can think of. I tried just doing a move and move back without the user having to click on the Mash window and press a key to continue, but that didn't work because the Mash window wasn't in focus and didn't refresh. That was my preference, but it just didn't pan out.

  • Change "DSP=1" to "DSP=0" in the EDIT USER-DEFINED SETTINGS section. This will disable displaying the log file on-screen and will just exit the CMD window automatically instead after cleaning and syncrhonizing.

  • Remove one "PAUSE" statement in the Wrye Mash Mods Tab Workaround code. This will not affect functionality at all, only will not not prompt you to press any key after the workaround completes.
    • Look down towards the end of the code for "Workaround for Wrye Mash ..."
    • Delete only the last "PAUSE" statement in that section, but no others (see "HERE-->" in code below)

You can make any single one of these changes on their own, or ...

  • Making only the first and second change, without making the third, will eliminate the need to ineract with the code AT ALL other than to drop your plugin onto it. But as mentioned, functionality is reduced.

  • Making only the second and third change, without making the first, will leave you having to touch the Wrye Mash window, and pressing a key ONCE on each clean rather than the THREE times you currently do. The Mods Tab refresh workaround will still function, but no output to screen afterwards.

  • Making only the first and third change is just silly and redundant. :tongue:


Here's where you can find the "PAUSE" statement to delete (look for the "HERE-->" comment at the very end)...
REM *********************************************************************************REM *	Update header description with "cleaned" message...REM *	Workaround for Wrye Mash refresh delay not showing updated masters ...REM *********************************************************************************ECHO Update header description . . . >> %LOG%SET TIM2=%date% %time: =0%tes3cmd header %HID% --description "+ /n Cleaned by tes3cmd %TIM2%" %~nx1 >> %LOG% 2>&1@ECHO: >> %LOG%IF %WKA% == 1 (	ECHO Force Wrye Mash refresh . . . >> %LOG%	MOVE %1 %T3C% >> %LOG% 2>&1	CLS	@ECHO:	ECHO *** YOU MUST DO THIS OR WRYE MASH WILL 	ECHO NOT REFRESH THE MODS TAB PROPERLY! ***	@ECHO:	@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO dirty mod has been removed from the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, and	PAUSE	CLS	MOVE %T3C% %1 >> %LOG% 2>&1		@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO cleaned mod has been added to the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, andHERE-->	PAUSE)

User avatar
Kellymarie Heppell
 
Posts: 3456
Joined: Mon Jul 24, 2006 4:37 am

Post » Tue Aug 17, 2010 2:22 am

Thanks - yeah it is the third one I would change.

I like seeing when the process is done, but don't want to have to do three key strokes and refresh mash to get there.

=============

[edit much later in the day (night)]

Well removing the pause statement just made it so that it required two keystrokes. Still too much I may try option 1 next as closing and re-opening mash takes but a few seconds.

[edit 2]
setting WKA=0 resulted in only having to drag the esp to the shortcut then one keystroke when done. And I did not have to close mash and re-open to get the green ... at least for the few mods I tested. I will be testing more plugins in the coming days.

Happy with that. thanks
User avatar
natalie mccormick
 
Posts: 3415
Joined: Fri Aug 18, 2006 8:36 am

Post » Tue Aug 17, 2010 12:27 am

Possible issue with the latest bat file.

When cleaning the mod http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=6006:
Started 14:34:53.39

Original plugin (pre-cleaning) header contents . . .

Cleaning Protective Guards.esp . . .

FATAL ERROR (): "Protective" does not end in .esm/.esp/.ess
" at script/tes3cmd line 4736

CLEANING: "Protective" ...

Cleaning completed.


Syncrhonizing mod - update masters and header . . .

FATAL ERROR (Protective): opening "Protective" for read/write (No such file or directory)
" at script/tes3cmd line 4729

Synchronizing complete.

Update header description . . .
FATAL ERROR (Protective): opening "Protective" for read/write (No such file or directory)
" at script/tes3cmd line 4729

If changes were made, a backup of Protective Guards.esp has been stored here:

"F:\Bethesda Games\Morrowind\Data Files\tes3cmd\backups\Protective Guards.esp"

New plugin (post-cleaning) header contents . . .
FATAL ERROR (Protective): opening "Protective" for input (No such file or directory)
" at script/tes3cmd line 4706

A log file of all actions taken can be found here:

"F:\Bethesda Games\Morrowind\Data Files\tes3cmd\backups\Protective Guards.esp-cleaned.log"

Finished 14:34:55.89

Strange because it does end in .esp

What may be at issue is that this mod does not have even morrowind.esm as a master. Now I've seen this with several Oblivion mods but this is the first time with a Morrowind mod where the plugin has no master.

Of course it could be something else.
User avatar
Anthony Rand
 
Posts: 3439
Joined: Wed May 09, 2007 5:02 am

Post » Tue Aug 17, 2010 5:03 am

Possible issue with the latest bat file.

When cleaning the mod http://planetelderscrolls.gamespy.com/View.php?view=Mods.Detail&id=6006:

Strange because it does end in .esp

What may be at issue is that this mod does not have even morrowind.esm as a master. Now I've seen this with several Oblivion mods but this is the first time with a Morrowind mod where the plugin has no master.

Of course it could be something else.

Easy fix. The problem was that using %1 or %~nx1 would output (using your example) - protective guards.esp - without any quotes. TES3CMD command line sees the space as the end of that parameter, and thus only sees the file name as - protective - and fails with the no .esp or .esm error.

Adding quotes around the name fixes this problem so that it will display as "prtective guards.esp" and should complete successfully. I didn't have this mod to test with, so I tested with "Blood and Gore.esp" to confirm.

Use this code below. I've removed the second PAUSE from the code now, so all you will need to do is set "WKA=0" if you don't want to have to touch Wrye Mash during a clean.

@ECHO OFF:STARTCLSREM *********************************************************************************REM *****	"Drag-and-Droppable" TES3CMD Cleaning Batch / CMD File		*****REM *****		by: RMWChaos	ver. 2011.05.15.18.00			*****REM *****		  original concept by: Pinkertonius			*****REM *********************************************************************************REM *REM *	TO SETUP ...REM *REM *		1. Download TES3CMD v0.37o from:REM *			http://mlox.googlecode.com/files/tes3cmd-0.37o-2010.08.20.7zREM *REM *		2. Unzip TES3CMD to your "\Morrowind\Data Files" directoryREM *REM *		3. Create a new "tes3cmd Cleaner.txt" file in the same directoryREM *REM *		4. Copy the entire contents of this code into the text file and save itREM *REM *		5. Rename the text file with a ".bat" or ".cmd" extension (either works)REM *REM *		6. *OPTIONAL* Create a SHORTCUT to the batch file on your desktopREM *REM *		7. *OPTIONAL* Add "--debug" after "tes3cmd clean" and/or "tes3cmd header"REM * 			in the lines below to enable verbose logging mode. **WARNING** ThisREM *			can produce a VERY LARGE log file that cannot always be opened in aREM *			standard editor like Wordpad, Notepad, or even Notepad++.REM *REM *********************************************************************************REM *REM *	The cleaned plugin will take the place of the old 'dirty' plugin and the oldREM *		plugin will be backed up to "\Data Files\tes3cmd\backups" by default.REM *REM *	If the mod is both cleaned and synchronized, a second backup will be createdREM *		appended with "~1". The first backup is the original 'dirty' mod, and theREM *		second ("~1") is the cleaned mod WITHOUT header synchronization (updatedREM *		masters and header record count).REM *REM *	A log file called "-cleaned.log" will also be created in theREM *		same "\Data Files\tes3cmd\backups" folder by default.REM *REM *********************************************************************************REM *REM *	Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *		to remove required GMSTs, and tes3cmd may ignore (not clean) other modsREM *		 based on its own internal code.REM *REM *********************************************************************************REM *REM *	If a plugin has required masters, they MUST already be located in /DATA FILESREM *		or both cleaning and updating masters will fail!REM *REM *********************************************************************************REM *********************************************************************************REM *****				MOD CLEANING STEPS			*****REM *********************************************************************************REM *REM *	First, make sure the mod master dependencies are already located in theREM *		"\Data Files" folder, or THE MOD WILL NOT BE CLEANED !!REM *REM *	TO RUN ...REM *		Drag ESP/M files onto the shortcut, .bat, or .cmd file to clean mods.REM *REM *	CLEANING ORDER ...REM * 		1. Official masters (i.e. Tribunal.esm and Bloodmoon.esm)REM * 		2. Mod masters (e.g. GIANTS.esm, etc.)REM * 		3. Mod plugins relying on Official or Mod MastersREM * 		4. Mod plugins that are a Master to another PluginREM * 		5. All other plugins with or without master dependenciesREM *REM *	DO NOT CLEAN plugins that act as "control files" for other masters as it willREM *		remove intentional duplicates meant to prevent other mods from over-REM *		writing required records in the master. An example of this would be theREM *		GIANTS Ultimate Control File plugin.REM *REM *	A *possible* fix to this would be to create a "blank" master and rename it toREM *		the plugin master dependency during cleaning. This would allow the modREM *		to be cleaned against official masters, but not the mod master(s).REM *********************************************************************************REM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************	SET T3C=%cd%\tes3cmd	SET DEF=%T3C%\backups	SET HID=--hide-backups	Set MOD="%~nx1"	FOR %%A IN (Tribunal.esm) DO SET TBL=%%~zA	FOR %%A IN (Bloodmoon.esm) DO SET BML=%%~zAREM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************REM *********************************************************************************REM *****	EDIT USER-DEFINED SETTINGS BELOW THE FOLLOWING REMARKS		*****REM *********************************************************************************REM *REM *	If you want to use the default tes3cmd behavior of storing ESP/M backups andREM *		log files in the same directory as the original plugin change either orREM *		both of the following to equal 0 (default is 1)...REM *REM *			SET BDE=0	;	this enables the default tes3cmd ESP/M backup behaviorREM *			SET LDE=0	;	this enables the default tes3cmd log file behaviorREM *REM *********************************************************************************REM *REM *	If you want to change the default ESP/M backups or log file directory locationREM *		"\Data Files\tes3cmd\backups", set either or both of the following to yourREM *		preferred path (default is %DEF%)...REM *REM *			SET BKP=C:\Your Preferred\MW ESPM Backup Path	;	no quotesREM *			SET LOG=C:\Your Preferred\tes3cmd Logfile Path	;	no quotesREM *REM *	NOTE: DO NOT CHANGE the "SET DEF=" statement above thinking it is a shortcutREM *			to changing both paths. Doing so will break the code during the copyREM *			ESP/M backup to user-defined path phase, which checks if DEF and BKPREM *			variables match first. They MUST NOT MATCH in order to move the file.REM *REM *********************************************************************************REM *REM *	By default, tes3cmd will update the plugin masters and header record count.REM *		To disable this, change the following setting to 0 (default is 1)...REM *REM *			SET SYN=0	;	this will DISABLE the automatic syncrhonizing featureREM *REM *********************************************************************************REM *REM *	To workaround a refresh issue Wrye Mash has with the Mods Tab, the cleanedREM *		mod will be moved to "\Data Files\tes3cmd" and prompt the user to touchREM *		the Wrye Mash window and confirm the mod has been removed from the list.REM *		The mod will then be moved back to "\Data Files", and the Mods Tab willREM *		update properly.REM *REM *	If you want to disable this function and refresh the Mods Tab manually, setREM *		the following equal to 0 (default is 1)...REM *REM *			SET WKA=0	;	this will DISABLE the workaround for Mods Tab refreshREM *REM *********************************************************************************REM *REM *	By default, the log report will display on-screen after all cleaning andREM *		synchronization activities have completed. If you want to disable thisREM *		functionality and simply close the command window after cleaning a mod,REM *		set the following equal to 0 (default is 1)...REM *REM *			SET DSP=0	;	this will DISABLE display of the log file on-screenREM *REM *********************************************************************************REM *********************************************************************************REM *****		--> BEGIN USER-DEFINED SETTINGS <--			*****REM *********************************************************************************	SET BDE=1	SET LDE=1	SET BKP=%DEF%	SET LOG=%DEF%	SET SYN=1	SET WKA=1	SET DSP=1REM *********************************************************************************REM *****		--> END USER-DEFINED SETTINGS <--			*****REM *********************************************************************************REM *********************************************************************************REM *****		CONFIRM USER-DEFINED SETTINGS				*****REM *********************************************************************************IF NOT %BDE% == 1 (	ECHO Backups will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%BKP%" == "%DEF%" (		ECHO Mod backups will be stored in a user-defined path.	) ELSE (		ECHO Mod backups will be stored in the default directory.	))@ECHO:IF NOT %LDE% == 1 (	ECHO Log files will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%LOG%" == "%DEF%" (		ECHO Log files will be stored in in a user-defined path.	) ELSE (		ECHO Log files will be stored in the default directory.	))@ECHO:IF NOT %SYN% == 1 (	ECHO Mod syncrhonization is DISABLED.) ELSE (	ECHO Mod synchronization is ENABLED.)@ECHO:IF NOT %WKA% == 1 (	ECHO Wrye Mash Mods Tab refresh workaround is DISABLED.) ELSE (	ECHO Wrye Mash Mods Tab refresh workaround is ENABLED.)@ECHO:@ECHO:REM *********************************************************************************REM * 	If Backup Directory Enabled, check if backup path does not exist & create it.REM * 	If Log Directory Enabled, check if log path does not exist & create it.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT EXIST "%BKP%" MD "%BKP%") ELSE (	SET HID=	SET BKP=%cd%	SET DEF=%cd%)IF NOT %LDE% == 0 (	IF NOT EXIST "%LOG%" MD "%LOG%") ELSE (	SET LOG=%cd%)REM *********************************************************************************REM *	Append path statements with the Plugin.name ...REM *********************************************************************************SET DEF="%DEF%\%~nx1"SET T3C="%T3C%\%~nx1"SET BKP="%BKP%\%~nx1"SET LOG="%LOG%\%~nx1-cleaned.log"REM *********************************************************************************REM *	Initiate log file with timestamp ...REM *   Append original plugin header contents to log file ...REM *********************************************************************************ECHO Cleaning of %~nx1 has begun ...@ECHO:ECHO You may not see activity for someECHO  time, especially for larger mods . . .@ECHO:@ECHO:ECHO Started %TIME% > %LOG%@ECHO: >> %LOG%ECHO Original plugin (pre-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Check for Morrowind.esm, Tribunal.esm, and Bloodmoon.esmREM *		If none of these, then "standard" ESP/M cleaning occurs...REM *********************************************************************************IF %MOD% == "Morrowind.esm" GOTO MORRECHO Cleaning %~nx1 . . . >> %LOG%@ECHO: >> %LOG%IF %MOD% == "Tribunal.esm" GOTO NO_GMSTIF %MOD% == "Bloodmoon.esm" GOTO NO_GMSTGOTO GMSTREM *********************************************************************************REM *	If file is Morrowind.esm ...REM *		Cannot clean Morrowind.esm -- There is no master to check against !!REM *********************************************************************************:MORRECHO You cannot clean %~nx1 !! >> %LOG%@ECHO: >> %LOG%GOTO DISPREM *********************************************************************************REM *	If file is Tribunal.esm or Bloodmoon.esm ...REM *		Use %1 for full path to bypass tes3cmd "ignore official masters" code.REM *********************************************************************************:NO_GMSTECHO GMSTs will NOT be cleaned . . . >> %LOG%@ECHO: >> %LOG%tes3cmd clean %HID% --instances --cell-params --dups --junk-cells --replace %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%GOTO POSTREM *********************************************************************************REM *	If file is any other plugin or master ...REM *		Use %~nx1 to allow tes3cmd code to ignore plugins in "no clean" list ...REM *********************************************************************************:GMSTtes3cmd clean %HID% --replace %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Synchronize plugin -- update masters and header record count ...REM *	For plugins with Tribunal.esm and/or Bloodmoon.esm, override tes3cmd code,REM *		replace official masters length value with current values ...REM *********************************************************************************:POSTIF NOT %SYN% == 1 ECHO Mod synchronization disabled by user. >> %LOG%@ECHO: >> %LOG%IF NOT %SYN% == 0 (	ECHO Syncrhonizing mod - update masters and header . . . >> %LOG%	@ECHO: >> %LOG%	tes3cmd header %HID% --synchronize %MOD% >> %LOG% 2>&1	@ECHO: >> %LOG%	ECHO Synchronizing complete. >> %LOG%)@ECHO: >> %LOG%REM *********************************************************************************REM *	Update header description with "cleaned" message...REM *	Workaround for Wrye Mash refresh delay not showing updated masters ...REM *********************************************************************************ECHO Update header description . . . >> %LOG%SET TIM2=%date% %time: =0%tes3cmd header %HID% --description "+ Cleaned by tes3cmd %TIM2%" %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%IF %WKA% == 1 (	ECHO Force Wrye Mash refresh . . . >> %LOG%	MOVE "%1" "%T3C%" >> %LOG% 2>&1	CLS	@ECHO:	ECHO *** YOU MUST DO THIS OR WRYE MASH WILL 	ECHO NOT REFRESH THE MODS TAB PROPERLY! ***	@ECHO:	@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO dirty mod has been removed from the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, and	PAUSE	CLS	MOVE "%T3C%" "%1" >> %LOG% 2>&1		@ECHO:	@ECHO:)REM *********************************************************************************REM *	Check to see if user changed default ESP/M backup path, and if so, move fileREM *		to the new location ...REM *	Log files are already created in the user-defined path; nothing to do here.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT %BKP% == %DEF% MOVE %DEF% %BKP%)ECHO If changes were made, a backup of %~nx1 has been stored here: >> %LOG%@ECHO: >> %LOG%ECHO %BKP% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Append cleaned & updated plugin header contents to end of log ...REM *********************************************************************************ECHO New plugin (post-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%REM *********************************************************************************REM *	Display location of log file ...REM *********************************************************************************:DISPECHO A log file of all actions taken can be found here: >> %LOG%@ECHO: >> %LOG%ECHO %LOG% >> %LOG%@ECHO: >> %LOG%ECHO Finished %TIME% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Output log file to console and wait for user input ...REM *********************************************************************************IF %DSP% == 1 (	CLS	TYPE %LOG%	PAUSE)REM *********************************************************************************REM *****		End of batch commands, exit CMD window.			*****REM *********************************************************************************:END


Let me know how that works for you.

-RMWChaos
User avatar
The Time Car
 
Posts: 3435
Joined: Sat Oct 27, 2007 7:13 pm

Post » Tue Aug 17, 2010 11:24 am

Works!!

Thanks so much for the quick fix.
User avatar
Cheryl Rice
 
Posts: 3412
Joined: Sat Aug 11, 2007 7:44 am

Post » Tue Aug 17, 2010 6:36 am

I made a couple corrections below having broken the synchronization piece with the fix yesterday to plugins with spaces in the names. Now, the behavior is as follows...

  • Check for Official gamesas Masters
  • If Morrowind.esm, do not clean (nothing to clean!)
  • If Tribunal.esm or Bloodmoon.esm, do not clean GMSTs <-- this is where I broke it with yesterday's fix
  • If any other plugin, clean as normal
  • After cleaning, synchronize (update headers and record count) <-- this was always broken for Tribunal and Bloodmoon until now
  • If Mash Workaround is enabled, prompt for user interaction (touch Mash window)
  • If enabled, display log file on-screen
  • Exit CMD window



@ECHO OFF:STARTCLSREM *********************************************************************************REM *****	"Drag-and-Droppable" TES3CMD Cleaning Batch / CMD File		*****REM *****		by: RMWChaos	ver. 2011.05.16.10.00			*****REM *****		  original concept by: Pinkertonius			*****REM *********************************************************************************REM *REM *	TO SETUP ...REM *REM *		1. Download TES3CMD v0.37o from:REM *			http://mlox.googlecode.com/files/tes3cmd-0.37o-2010.08.20.7zREM *REM *		2. Unzip TES3CMD to your "\Morrowind\Data Files" directoryREM *REM *		3. Create a new "tes3cmd Cleaner.txt" file in the same directoryREM *REM *		4. Copy the entire contents of this code into the text file and save itREM *REM *		5. Rename the text file with a ".bat" or ".cmd" extension (either works)REM *REM *		6. *OPTIONAL* Create a SHORTCUT to the batch file on your desktopREM *REM *		7. *OPTIONAL* Add "--debug" after "tes3cmd clean" and/or "tes3cmd header"REM * 			in the lines below to enable verbose logging mode. **WARNING** ThisREM *			can produce a VERY LARGE log file that cannot always be opened in aREM *			standard editor like Wordpad, Notepad, or even Notepad++.REM *REM *********************************************************************************REM *REM *	The cleaned plugin will take the place of the old 'dirty' plugin and the oldREM *		plugin will be backed up to "\Data Files\tes3cmd\backups" by default.REM *REM *	If the mod is both cleaned and synchronized, a second backup will be createdREM *		appended with "~1". The first backup is the original 'dirty' mod, and theREM *		second ("~1") is the cleaned mod WITHOUT header synchronization (updatedREM *		masters and header record count).REM *REM *	A log file called "-cleaned.log" will also be created in theREM *		same "\Data Files\tes3cmd\backups" folder by default.REM *REM *********************************************************************************REM *REM *	Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *		to remove required GMSTs, and tes3cmd may ignore (not clean) other modsREM *		 based on its own internal code.REM *REM *********************************************************************************REM *REM *	If a plugin has required masters, they MUST already be located in /DATA FILESREM *		or both cleaning and updating masters will fail!REM *REM *********************************************************************************REM *********************************************************************************REM *****				MOD CLEANING STEPS			*****REM *********************************************************************************REM *REM *	First, make sure the mod master dependencies are already located in theREM *		"\Data Files" folder, or THE MOD WILL NOT BE CLEANED !!REM *REM *	TO RUN ...REM *		Drag ESP/M files onto the shortcut, .bat, or .cmd file to clean mods.REM *REM *	CLEANING ORDER ...REM * 		1. Official masters (i.e. Tribunal.esm and Bloodmoon.esm)REM * 		2. Mod masters (e.g. GIANTS.esm, etc.)REM * 		3. Mod plugins that are a Master to another PluginREM * 		4. Mod plugins relying on Official Masters, Mod Masters, or Plugin MastersREM * 		5. All other plugins without master dependenciesREM *REM *	DO NOT CLEAN plugins that act as "control files" for other masters as it willREM *		remove intentional duplicates meant to prevent other mods from over-REM *		writing required records in the master. An example of this would be theREM *		GIANTS Ultimate Control File plugin.REM *REM *	A *possible* fix to this would be to create a "blank" master and rename it toREM *		the plugin master dependency during cleaning. This would allow the modREM *		to be cleaned against official masters, but not the mod master(s).REM *REM *	Another *possible* fix to this would be to create a new IF/ELSE branch that allowsREM *		user to choose a no-dups clean; however, this would add another levelREM *		of user interaction on each mod, when only a very few mods actuallyREM *		require it. So a "no-dup-clean" list might be a better alternative.REM *********************************************************************************REM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************	SET T3C=%cd%\tes3cmd	SET DEF=%T3C%\backups	SET HID=--hide-backups	SET MOD="%~nx1"	FOR %%A IN (Tribunal.esm) DO SET TBL=%%~zA	FOR %%A IN (Bloodmoon.esm) DO SET BML=%%~zAREM *********************************************************************************REM *****		!!! DO NOT EDIT THESE DEFAULT SETTINGS !!!		*****REM *********************************************************************************REM *********************************************************************************REM *****	EDIT USER-DEFINED SETTINGS BELOW THE FOLLOWING REMARKS		*****REM *********************************************************************************REM *REM *	If you want to use the default tes3cmd behavior of storing ESP/M backups andREM *		log files in the same directory as the original plugin change either orREM *		both of the following to equal 0 (default is 1)...REM *REM *			SET BDE=0	;	this enables the default tes3cmd ESP/M backup behaviorREM *			SET LDE=0	;	this enables the default tes3cmd log file behaviorREM *REM *********************************************************************************REM *REM *	If you want to change the default ESP/M backups or log file directory locationREM *		"\Data Files\tes3cmd\backups", set either or both of the following to yourREM *		preferred path (default is %DEF%)...REM *REM *			SET BKP=C:\Your Preferred\MW ESPM Backup Path	;	no quotesREM *			SET LOG=C:\Your Preferred\tes3cmd Logfile Path	;	no quotesREM *REM *	NOTE: DO NOT CHANGE the "SET DEF=" statement above thinking it is a shortcutREM *			to changing both paths. Doing so will break the code during the copyREM *			ESP/M backup to user-defined path phase, which checks if DEF and BKPREM *			variables match first. They MUST NOT MATCH in order to move the file.REM *REM *********************************************************************************REM *REM *	By default, tes3cmd will update the plugin masters and header record count.REM *		To disable this, change the following setting to 0 (default is 1)...REM *REM *			SET SYN=0	;	this will DISABLE the automatic syncrhonizing featureREM *REM *********************************************************************************REM *REM *	To workaround a refresh issue Wrye Mash has with the Mods Tab, the cleanedREM *		mod will be moved to "\Data Files\tes3cmd" and prompt the user to touchREM *		the Wrye Mash window and confirm the mod has been removed from the list.REM *		The mod will then be moved back to "\Data Files", and the Mods Tab willREM *		update properly.REM *REM *	If you want to disable this function and refresh the Mods Tab manually, setREM *		the following equal to 0 (default is 1)...REM *REM *			SET WKA=0	;	this will DISABLE the workaround for Mods Tab refreshREM *REM *********************************************************************************REM *REM *	By default, the log report will display on-screen after all cleaning andREM *		synchronization activities have completed. If you want to disable thisREM *		functionality and simply close the command window after cleaning a mod,REM *		set the following equal to 0 (default is 1)...REM *REM *			SET DSP=0	;	this will DISABLE display of the log file on-screenREM *REM *********************************************************************************REM *********************************************************************************REM *****		--> BEGIN USER-DEFINED SETTINGS <--			*****REM *********************************************************************************	SET BDE=1	SET LDE=1	SET BKP=%DEF%	SET LOG=%DEF%	SET SYN=1	SET WKA=1	SET DSP=1REM *********************************************************************************REM *****		--> END USER-DEFINED SETTINGS <--			*****REM *********************************************************************************REM *********************************************************************************REM *****		CONFIRM USER-DEFINED SETTINGS				*****REM *********************************************************************************IF NOT %BDE% == 1 (	ECHO Backups will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%BKP%" == "%DEF%" (		ECHO Mod backups will be stored in a user-defined path.	) ELSE (		ECHO Mod backups will be stored in the default directory.	))@ECHO:IF NOT %LDE% == 1 (	ECHO Log files will be stored in the directory where the mod currently resides.) ELSE (	IF NOT "%LOG%" == "%DEF%" (		ECHO Log files will be stored in a user-defined path.	) ELSE (		ECHO Log files will be stored in the default directory.	))@ECHO:IF NOT %SYN% == 1 (	ECHO Mod syncrhonization is DISABLED.) ELSE (	ECHO Mod synchronization is ENABLED.)@ECHO:IF NOT %WKA% == 1 (	ECHO Wrye Mash Mods Tab refresh workaround is DISABLED.) ELSE (	ECHO Wrye Mash Mods Tab refresh workaround is ENABLED.)@ECHO:@ECHO:REM *********************************************************************************REM * 	If Backup Directory Enabled, check if backup path does not exist & create it.REM * 	If Log Directory Enabled, check if log path does not exist & create it.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT EXIST "%BKP%" MD "%BKP%") ELSE (	SET HID=	SET BKP=%cd%	SET DEF=%cd%)IF NOT %LDE% == 0 (	IF NOT EXIST "%LOG%" MD "%LOG%") ELSE (	SET LOG=%cd%)REM *********************************************************************************REM *	Append path statements with the Plugin.name ...REM *********************************************************************************SET DEF="%DEF%\%~nx1"SET T3C="%T3C%\%~nx1"SET BKP="%BKP%\%~nx1"SET LOG="%LOG%\%~nx1-cleaned.log"REM *********************************************************************************REM *	Initiate log file with timestamp ...REM *   Append original plugin header contents to log file ...REM *********************************************************************************ECHO Cleaning of %~nx1 has begun ...@ECHO:ECHO You may not see activity for someECHO  time, especially for larger mods . . .@ECHO:@ECHO:ECHO Started %TIME% > %LOG%@ECHO: >> %LOG%ECHO Original plugin (pre-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Check for Morrowind.esm, Tribunal.esm, and Bloodmoon.esmREM *		If none of these, then "standard" ESP/M cleaning occurs...REM *********************************************************************************IF %MOD% == "Morrowind.esm" GOTO MORRECHO Cleaning %~nx1 . . . >> %LOG%@ECHO: >> %LOG%IF %MOD% == "Tribunal.esm" GOTO NO_GMSTIF %MOD% == "Bloodmoon.esm" GOTO NO_GMSTGOTO GMSTREM *********************************************************************************REM *	If file is Morrowind.esm ...REM *		Cannot clean Morrowind.esm -- There is no master to check against !!REM *********************************************************************************:MORRECHO You cannot clean %~nx1 !! >> %LOG%@ECHO: >> %LOG%GOTO DISPREM *********************************************************************************REM *	If file is Tribunal.esm or Bloodmoon.esm ...REM *		Use "%1" for full path to bypass tes3cmd "ignore official masters" code.REM *********************************************************************************:NO_GMSTECHO GMSTs will NOT be cleaned . . . >> %LOG%@ECHO: >> %LOG%SET MOD="%1"tes3cmd clean %HID% --instances --cell-params --dups --junk-cells --replace %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%GOTO POSTREM *********************************************************************************REM *	If file is any other plugin or master ...REM *		Use %~nx1 to allow tes3cmd code to ignore plugins in "no clean" list ...REM *********************************************************************************:GMSTtes3cmd clean %HID% --replace %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Cleaning completed. >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Synchronize plugin -- update masters and header record count ...REM *	For plugins with Tribunal.esm and/or Bloodmoon.esm, override tes3cmd code,REM *		replace official masters length value with current values ...REM *********************************************************************************:POSTIF NOT %SYN% == 1 ECHO Mod synchronization disabled by user. >> %LOG%@ECHO: >> %LOG%IF NOT %SYN% == 0 (	ECHO Syncrhonizing mod - update masters and header . . . >> %LOG%	@ECHO: >> %LOG%	tes3cmd header %HID% --synchronize %MOD% >> %LOG% 2>&1	@ECHO: >> %LOG%	ECHO Synchronizing complete. >> %LOG%)@ECHO: >> %LOG%REM *********************************************************************************REM *	Update header description with "cleaned" message...REM *	Workaround for Wrye Mash refresh delay not showing updated masters ...REM *********************************************************************************ECHO Update header description . . . >> %LOG%SET TIM2=%date% %time: =0%tes3cmd header %HID% --description "+ Cleaned by tes3cmd on %TIM2%" %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%IF %WKA% == 1 (	ECHO Force Wrye Mash refresh . . . >> %LOG%	MOVE "%1" "%T3C%" >> %LOG% 2>&1	CLS	@ECHO:	ECHO *** YOU MUST DO THIS OR WRYE MASH WILL 	ECHO NOT REFRESH THE MODS TAB PROPERLY! ***	@ECHO:	@ECHO:	ECHO Click on the Wrye Mash window to see the	ECHO dirty mod has been removed from the list.	@ECHO:	@ECHO:	ECHO Then, click on this window again, and	PAUSE	CLS	MOVE "%T3C%" "%1" >> %LOG% 2>&1		@ECHO:	@ECHO:)REM *********************************************************************************REM *	Check to see if user changed default ESP/M backup path, and if so, move fileREM *		to the new location ...REM *	Log files are already created in the user-defined path; nothing to do here.REM *********************************************************************************IF NOT %BDE% == 0 (	IF NOT %BKP% == %DEF% MOVE %DEF% %BKP%)ECHO If changes were made, a backup of %~nx1 has been stored here: >> %LOG%@ECHO: >> %LOG%ECHO %BKP% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Append cleaned & updated plugin header contents to end of log ...REM *********************************************************************************ECHO New plugin (post-cleaning) header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%REM *********************************************************************************REM *	Display location of log file ...REM *********************************************************************************:DISPECHO A log file of all actions taken can be found here: >> %LOG%@ECHO: >> %LOG%ECHO %LOG% >> %LOG%@ECHO: >> %LOG%ECHO Finished %TIME% >> %LOG%@ECHO: >> %LOG%REM *********************************************************************************REM *	Output log file to console and wait for user input ...REM *********************************************************************************IF %DSP% == 1 (	CLS	TYPE %LOG%	PAUSE)REM *********************************************************************************REM *****		End of batch commands, exit CMD window.			*****REM *********************************************************************************:END


Sorry for the multiple updates. I really didn't expect this to be such an in-depth project; otherwise, I would have used Github or something to maintain the code. It's just a batch file, for heaven's sake! :facepalm:

I might add one more level of branching code to check for "control files" that should not have duplicates removed against the Mod master. The problem is that it won't clean duplicates against the Official masters this way either.

So then again, I might do some really "fancy" code (not really all that fancy) to check for Mod masters, create a fake master with the same name, run clean on the plugin, then copy out the fake master, copy back in the real master, and synchronize the header. Sounds like a lot of work, but really the only "difficult" part is parsing the list of masters. The rest of the code is simple...

FOR /F "tokens=* delims=(?not sure yet?)" %%A IN ('%cd%\*.esm') DO (	REM * Create a Temp folder	IF NOT EXIST "%cd%\TEMP" (		MD "%cd%\TEMP" >> %LOG%	)	REM * Create an empty master	IF NOT EXIST "%cd%\TEMP\T3CTemp.esm" (		REM * Easiest way to create a blank master template is to copy current mod master...		COPY "%%A" "%cd%\T3CTemp.esm"		REM * ...then delete all records except header, which should work as a fake master...		REM * ...may have to do this for each master so header matches ... ick.		tes3cmd delete --no-match "TES3" "T3CTemp.esm" >> %LOG% 2>&1		MOVE "%cd%\T3CTemp.esm" "%cd%\TEMP\T3CTemp.esm"	)	REM * Check for Beth masters, then move Mod masters, create fake Mod masters, clean	IF NOT "%%A"=="Morrowind.esm" (		IF NOT "%%A"=="Tribunal.esm" (			IF NOT "%%A"=="Bloodmoon.esm" (				REM * Move original master to TEMP				MOVE "%cd%\%%A" "%cd%\TEMP\%%A"				REM * Copy fake ESM to original master name in \Data Files				COPY "%cd%\T3CTemp.esm" "%cd%\%%A"			)		)	))REM * Perform clean on Mod with fake master using standard clean code:GMST. . .tes3cmd clean %HID% --replace %MOD% >> %LOG% 2>&1. . .REM * Delete fake masters and move all original masters in \TEMP back to \Data FilesFOR /F "tokens=*" %%A IN ('%cd%\TEMP\*.esm') DO (	REM * Delete fake master	DEL "%cd%\%%A"	REM * Move all ESM files in \TEMP to \Data Files except fake master template (maybe delete depending on header req's)	IF NOT "%%A" == "T3CTemp.esm" (		MOVE "%cd%\TEMP\%%A" "%cd%\%%A"	))


Well, something like that anyway. Wrote this on the fly, so who knows? Really can't just do a *.esm on the first FOR statement because other masters may exist besides those required by the mod to be cleaned. So there will have to be a 'tes3cmd dump --type TES3 "%MOD%" > "T3Ctemp.txt" ' statement, then parse that file for "*MAST: " records, and it becomes ... oh wait, already do that at the start into %LOG% ... so just need to parse that, grep for "*MAST: ", which I believe can be done within the FOR statment itself.

Need to think about that. And of course this would be a "if the record matches known control files in a list"; otherwise, user will have to somehow tell the batch file to not clean dups against the mod masters...

Bears some thinking. Not enough coffee yet for this kind of brain exercise ... gonna overheat my CPU! :flamed:

-RMWChaos
User avatar
Hayley Bristow
 
Posts: 3467
Joined: Tue Oct 31, 2006 12:24 am

Post » Tue Aug 17, 2010 2:32 am

I cleaned a bunch of mods yesterday.

Are you saying that they may be problematic?
User avatar
Bird
 
Posts: 3492
Joined: Fri Nov 30, 2007 12:45 am

Post » Tue Aug 17, 2010 2:51 am

I cleaned a bunch of mods yesterday.

Are you saying that they may be problematic?

As long as you followed the instructions in the Remarks, no, they should be just fine. The only ones that I'm trying to deal with here are the "control file" types, which I state not to clean in the code you have now. In the case of the "GIANTS Ultimate Control File.esp" it's optional anyway, but those are the things I'm trying to work out. Really, these are corner cases, not the mainstream.
User avatar
Kate Schofield
 
Posts: 3556
Joined: Mon Sep 18, 2006 11:58 am

Post » Tue Aug 17, 2010 2:52 am

Would patches count as controller type files?

While I did not clean giants (again) I forget if I cleaned any that would fit into that category - would a mod like this: http://www.tesnexus.com/downloads/file.php?id=20882 which apparently makes this change:
Cleaned out scripts that update the vanilla levelled lists - included Wrye's levelled list patch for correct functionality with levelled list mergers.


============

Then a behavior I'm noticing in cleaning certain mods - mostly with WKA set to 0 I'm only having to tap once to close the cmd box - I'm ok with that - let's me know when it is done.

With certain mods and I will cite BTB Improvements plugins:
BTB - Character (alternate).esp
BTB - Settings (alternate).esp
and A few others I forget ... I'm seeing the cmd box closes on its own.

Could it be the parenthesis? (that being the similarity I see). It seems to the case with all plugins that have parenthesis in the title.

A cleaning log is generated though.

===========

As per discussion http://www.gamesas.com/index.php?/topic/1177482-best-practices-for-making-merged-objects/page__view__findpost__p__17701437 - any chance you'd want or be able to tackle a bat that could merge objects?

Of course I've not explored the function of that with tes3cmd yet - may be unnecessary.

... and thanks a ton for working on this.
User avatar
Ashley Campos
 
Posts: 3415
Joined: Fri Sep 22, 2006 9:03 pm

Post » Tue Aug 17, 2010 6:14 am

Would patches count as controller type files?

While I did not clean giants (again) I forget if I cleaned any that would fit into that category - would a mod like this: http://www.tesnexus.com/downloads/file.php?id=20882 which apparently makes this change:

No, the "control file" type of mod is generally an ESP that goes hand-in-hand with a ESM. Sri's Alchemy, in your example, does not have its own master. The mod readme should call it out explicitly as it does with Giants, and is almost always an optional file. The reason for this is that the ESP contains only duplicates of what is in the ESM file, and is loaded late in the load order - generally near the end, in fact. It's purpose is to overwrite any other mod's changes that would break the ESM mod changes.

So while it's perfectly fine to clean the ESM of Giants, you don't (yet) want to clean the ESP Giants control file until I work out a way to ignore the Giants ESM and only clean against the official masters.

"Patches" or add-ons to a mod only change something about their behavior that was undesireable or add features that were not included. Because the records are different from the original mod, cleaning them will not remove them at all. Cleaning only compares the mod records to masters and removes any identical records that make no changes along with other junk and orphan records as well as those Evil GMST entries that bloat the size of the mod (slowing performance and sometimes causing other problems like CTDs). These mods work by either replacing the original mod or loading later in the load order to overwrite the original record entries.

Cleaning them generally won't cause any problems; however, you should know that ANY cleaning can cause unintentional problems if the mod author intended something to be there that the cleaning tool thinks should be removed.

Always refer to the readme file for notes that may tell you why you might not want to clean a mod. The only other way to tell, and the proper way to clean and introduce any kind of mod, takes a considerable amount of time... test the mod BEFORE you clean it with only the minimum number of other required mods running. That gives you a baseline for it's behavior. Clean it, then test again as before. Often, you can see performance improvements or problems (such as CTDs) are resolved. Other times, you see problems are introduced, and you either need to clean the mod manually with some other tool, or not clean it at all.

As an example, "Immersive Chargen v1.25" introduces a game-breaking bug, where both the banker and the last guard respond with the annoying "Who's there?" message. You cannot proceed to exit the Excise Office and start the game unless you "cheat" with a console command. However, after cleaning it, they both respond properly, and the game progresses as it should, without breaking anythig else that I have seen.

On the other hand, you might find a feature of a mod no longer works after cleaning it, in which case, you might not want to clean it, or you might want to figure out how to clean it manually.

Then a behavior I'm noticing in cleaning certain mods - mostly with WKA set to 0 I'm only having to tap once to close the cmd box - I'm ok with that - let's me know when it is done.

With certain mods and I will cite BTB Improvements plugins:
BTB - Character (alternate).esp
BTB - Settings (alternate).esp
and A few others I forget ... I'm seeing the cmd box closes on its own.

Could it be the parenthesis? (that being the similarity I see). It seems to the case with all plugins that have parenthesis in the title.

A cleaning log is generated though.

Post the output of the cleaning log here, please, and I'll take a look at it. You might be right that it's the parenthesis, in which case, I believe I know how to fix that problem.

As per discussion http://www.gamesas.com/index.php?/topic/1177482-best-practices-for-making-merged-objects/page__view__findpost__p__17701437 - any chance you'd want or be able to tackle a bat that could merge objects?

Of course I've not explored the function of that with tes3cmd yet - may be unnecessary.

To be honest, merging objects is not an area that I've looked into extensively, yet. Yakoby's site has some archived threads about how to use TESTool to merge objects, and what to do when your mod list grows so large that TESTool starts giving CTDs to desktop, but I find those responses unsatisfying. Takes too much manual effort to make it all work.

After I get this batch working properly, I'll take a look at object merging. There were some requests to do this within Wrye Mash along with Merging Leveled Lists; however, Wrye is semi-retired at this point, and the work involved would be extensive.

I'll talk to Yakoby and see what he thinks about it. Depending upon what source code is available for TESTool, perhaps some work can be done with the merge objects function.

... and thanks a ton for working on this.

My pleasure. I enjoy this as a hobby, probably more than actually playing the modded games, truth be told.

Remember, though, that these batch files are really just ways to make it easier to perform the most common functions with command line tools. They are not actually a fix to any problems with the tools.

The only real way to fix issues is to correct the original code, which is something I'd like to work on, but that takes time, and effort, and time, and research, and most importantly, time. :blink:

Take care,

-RMWChaos
User avatar
~Sylvia~
 
Posts: 3474
Joined: Thu Dec 28, 2006 5:19 am

Post » Tue Aug 17, 2010 8:17 am

Well as I've said a few times I'm more used to Oblivion Modding where 99% of the time identical to master records and deletions of master records are not desired. Yes there are rare instances where a master record needs to be carried forward and be expressed but that usually happens with patches (esp being directly dependent on other esp - very uncommon in Morrowind, but very common in Oblivion) or overhauls where it could just as easily be that a master record is carried forward then further altered by another esp down the line.

In general the common practice for Oblivion mod cleaning is assume that the ITM and deleted records are not intended and to first work from the position that is best to remove them prior to even playing if possible.

As for what you call controller esp - they seem rare here in Morrowland. In Oblivioland extremely common and Tes4edit has a filter where you can set it to clean only against the real master (oblivion.esm), but the again the general suggestion is to clean against other esm but first to clean the esm.

I hear and understand your advice about testing mods first before cleaning, but I'm gonna do the opposite - I'm going to clean them and then test. The point of cleaning is about compatibility - if only using 3 mods - not much of a need to clean. I will take the time to test mods in chunks, but not individually. I've a good sense that if I'm testing a landsacpe mod I can also test a fatigue mod without too much concern over conflict.

I've done this now thousands of times with Oblivion. Your warnings are headed and I may post back in a few weeks that you were right and that i should have tested first.

Here are the log files of the parenthetical plugins:
Spoiler
Started  1:10:16.48  Original plugin (pre-cleaning) header contents . . . Plugin: BTB - Character (Alternate).espRecord: TES3 "()" Flags:0x0000 ()  HEDR:   Version:1.3  Is_Master:False  Author:"BTB"  Description:"Edits birthsigns, racial stats, abilities, powers, and skill bonuses.Also adds a script that allows birthsign attribute bonuses to extend past 100.This is an alternate plugin that omits the permanent Khajiit night-eye edit."  N_Records:139 *MAST: Master:Morrowind.esm  DATA: Length:79837557 Cleaning BTB - Character (Alternate).esp . . .  CLEANING: "BTB - Character (Alternate).esp" ...Loaded cached Master: /morrowind.esmBTB - Character (Alternate).esp was not modified Cleaning completed.   Syncrhonizing mod - update masters and header . . .    BTB - Character (Alternate).esp: Updated Record Count: 139 --> 64 Synchronizing complete.  Update header description . . . BTB - Character (Alternate).esp: AUTH=BTB  DESC=Edits birthsigns, racial stats, abilities, powers, and skill bonuses.\r\n\r\nAlso adds a script that allows birthsign attribute bonuses to extend past 100.\r\n\r\nThis is an alternate plugin that omits the permanent Khajiit night-eye edit. Cleaned by tes3cmd on Tue 05/17/2011 01:10:18.21


Spoiler
Started  1:10:23.87  Original plugin (pre-cleaning) header contents . . . Plugin: BTB - Settings (Alternate).espRecord: TES3 "()" Flags:0x0000 ()  HEDR:   Version:1.3  Is_Master:False  Author:"BTB - Alternate Plugin"  Description:"Edits GMSTs, skill progression rates, repair items, and soul gems.Also adds restocking soul gems to some merchants and adds new guards.This is an alternate plugin that omits the major/minor/misc skill growth edits"  N_Records:1631 *MAST: Master:Morrowind.esm  DATA: Length:79837557 Cleaning BTB - Settings (Alternate).esp . . .  CLEANING: "BTB - Settings (Alternate).esp" ...Loaded cached Master: /morrowind.esm Cleaned junk-CELL: azura's coast region (12, 14) Cleaned junk-CELL: molag mar region (12, -7) Cleaned junk-CELL: balmora (-3, -2) Cleaned redundant AMBI,WHGT from CELL: balmora, nalcarya of white haven: fine alchemist Cleaned redundant AMBI,WHGT from CELL: caldera, guild of mages Cleaned redundant AMBI,WHGT from CELL: suran, ralds oril: traderOutput saved in: "BTB - Settings (Alternate).esp"Original backed up to: "/tes3cmd/backups/BTB - Settings (Alternate)~2.esp"Cleaning Stats for "BTB - Settings (Alternate).esp":                       junk-CELL:     3             redundant CELL.AMBI:     3             redundant CELL.WHGT:     3 Cleaning completed.   Syncrhonizing mod - update masters and header . . .   Synchronizing complete.  Update header description . . . BTB - Settings (Alternate).esp: AUTH=BTB - Alternate Plugin  DESC=Edits GMSTs, skill progression rates, repair items, and soul gems.\r\n\r\nAlso adds restocking soul gems to some merchants and adds new guards.\r\n\r\nThis is an alternate plugin that omits the major/minor/misc skill growth edits Cleaned by tes3cmd on Tue 05/17/2011 01:10:31.02

User avatar
James Hate
 
Posts: 3531
Joined: Sun Jun 24, 2007 5:55 am

Post » Tue Aug 17, 2010 12:37 pm

Interesting. I've been testing cleaning mods with parentheses in the name, and am getting inconsistent results with tes3cmd. At the command line, even with quotes around the mod name, it fails because the name is cutoff at the first parens.

I've tried several different methods of passing a mod name with parens to tes3cmd including quotes, no quotes, assigning the mod name to a variable, assigning the fully qualified mod path to a variable, etc., but none work consistently.

So what I might do is a simple replace on the name before cleaning to remove the parens, and then put them back in afterwards. Will have to use an ASCII character that tes3cmd recognizes but that is also uncommon enough that it's unlikely to be used in a mod name.

Actually, there is a completely easier way - replace the name of all mods to be cleaned with a temporary name...

  • Store the original mod name in a variable
  • Rename the mod to "T3C.esp" or "T3C.esm"
  • Clean the mod
  • Rename the mod to the original name.


Now for this to work properly, I will have to bypass tes3cmd's internal backup functionality and create a backup of the mod manually ... easy enough. Otherwise, I would have to rename both the newly cleaned mod and the backup mod to the original name, which is not too much trouble, really.

Well, let me think about it and play with the code some more. Several ways I can fix this and make sure there are never any problems with the mod names when cleaning. In fact, doing it the way I mentioned above might actually resolve the Wrye Mash Mods tab refresh issue as well. Hmm...

I'll get back to you later.

-RMWChaos
User avatar
mimi_lys
 
Posts: 3514
Joined: Mon Apr 09, 2007 11:17 am

Post » Mon Aug 16, 2010 9:55 pm

I revamped the code for the batch / cmd file, and tested it against some funky mod names, inlcuding this one:

Test ò?? (~`-!@#$%^&) 0987654321.esp


I removed much complexity, including the ability to make user-defined changes, which was just adding too many problems to the mix for what should be a very simple little batch file.

All seems to work appropriately; so give it a try and let me know what you think.
@ECHO OFF:STARTCLSREM *********************************************************************************REM *****	"Drag-and-Droppable" TES3CMD Cleaning Batch / CMD File		*****REM *****		by: RMWChaos	ver. 2011.05.22-02.33			*****REM *****		  original concept by: Pinkertonius			*****REM *********************************************************************************REM *REM *	TO SETUP ...REM *REM *		1. Download TES3CMD v0.37o from:REM *			http://mlox.googlecode.com/files/tes3cmd-0.37o-2010.08.20.7zREM *REM *		2. Unzip TES3CMD to your "\Morrowind\Data Files" directoryREM *REM *		3. Create a new "T3Clean.txt" file in the same directoryREM *REM *		4. Copy the entire contents of this code into the text file and save itREM *REM *		5. Rename the text file with a ".bat" or ".cmd" extension (either works)REM *REM *		6. *OPTIONAL* Create a SHORTCUT to the batch file on your desktopREM *REM *********************************************************************************REM *REM *	The cleaned plugin will take the place of the old 'dirty' plugin and the oldREM *		plugin will be backed up to "\Data Files\tes3cmd\backups" by default.REM *REM *	A log file called "-cleaned.log" will also be created in theREM *		same "\Data Files\tes3cmd\backups" folder by default.REM *REM *********************************************************************************REM *REM *	Tribunal.esm and Bloodmoon.esm will use a different cleaning method so as notREM *		to remove required GMSTs, and tes3cmd may ignore (not clean) other modsREM *		 based on its own internal code.REM *REM *********************************************************************************REM *********************************************************************************REM *****			MOD CLEANING STEPS				*****REM *********************************************************************************REM *REM *	First, make sure the mod master dependencies are already located in theREM *		"\Data Files" folder, or THE MOD WILL NOT BE CLEANED !!REM *REM *	TO RUN ...REM *		Drag ESP/M files onto the shortcut, .bat, or .cmd file to clean mods.REM *REM *	CLEANING ORDER ...REM * 		1. Official masters (i.e. Tribunal.esm and Bloodmoon.esm)REM * 		2. Mod masters (e.g. GIANTS.esm, etc.)REM * 		3. Mod plugins that are a Master to another PluginREM * 		4. Mod plugins relying on Official Masters, Mod Masters, or Plugin MastersREM * 		5. All other plugins without master dependenciesREM *REM *	DO NOT CLEAN MOD "CONTROL FILES" ...REM *		Files such as "GIANTS Ultimate Control File.esp" intentionally containREM *		records duplicated from their mod master, and should not be cleaned.REM *REM *********************************************************************************REM *********************************************************************************REM *****	CHECK for OFFICIAL ESMs, INITIATE LOG, CLEAN, and SYNC		*****REM *********************************************************************************REM *	Set initial environment variables ...SET MOD="%~nx1"SET TMP=".%~nx1"SET BAK="%cd%\tes3cmd\backups\.%~nx1"SET DBL="%cd%\tes3cmd\backups\%~n1~*%~x1"SET LOG="%cd%\tes3cmd\backups\%~nx1-cleaned.log"REM *	Check for Morrowind.esm (cannot clean) ...IF %MOD%=="Morrowind.esm" (	ECHO You cannot clean %MOD%.	PAUSE	GOTO END)REM *	Initiate log file ...ECHO Cleaning of %MOD% initiated on %DATE% at %TIME% > %LOG%@ECHO: >> %LOG%REM *   Append original mod header contents to log file ...ECHO Pre-clean / pre-sync mod header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG%@ECHO: >> %LOG%REM *	Notify user that cleaning has begun ...ECHO Cleaning of %MOD% has begun . . .@ECHO:ECHO You may not see activity for someECHO  time, especially on larger mods . . .@ECHO:@ECHO:REM *	If file is NOT Tribunal or Bloodmoon ...IF NOT %MOD%=="Tribunal.esm" (	IF NOT %MOD%=="Bloodmoon.esm" (		tes3cmd clean --hide-backups --replace %MOD% >> %LOG% 2>&1		GOTO SYNC	))REM *	If mod IS Tribunal or Bloodmoon ...ECHO "EVIL GMSTs" will not be cleaned . . . >> %LOG%@ECHO: >> %LOG%REM *	Temporarily rename mod to bypass tes3cmd no-clean behavior ...REN %MOD% %TMP%tes3cmd clean --hide-backups --replace --instances --cell-params --dups --junk-cells %TMP% >> %LOG% 2>&1REM *	Rename mod and backup back to original name ...REN %TMP% %MOD%REN %BAK% %MOD%:SYNC@ECHO: >> %LOG%@ECHO: >> %LOG%REM *	Synchronize mod header ...ECHO Syncrhonizing mod - update masters and header . . . >> %LOG%@ECHO: >> %LOG%tes3cmd header --hide-backups --synchronize %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%ECHO Synchronizing complete. >> %LOG%@ECHO: >> %LOG%REM *	Append mod header description ...ECHO Update header description . . . >> %LOG%tes3cmd header --hide-backups --description "+ Cleaned by tes3cmd on %DATE% at %TIME%." %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%REM *	Delete extra backups created during synchronization ...IF EXIST %DBL% DEL %DBL%REM *********************************************************************************REM *****	TIMESTAMP LOG, OUTPUT LOG, and DISPLAY LOG LOCATION		*****REM *********************************************************************************:DISPREM *	Append cleaned & updated mod header contents to end of log ...ECHO Post-clean / post-sync mod header contents . . . >> %LOG%tes3cmd dump --type TES3 %MOD% >> %LOG% 2>&1@ECHO: >> %LOG%REM *	Timestamp the log file with completeion date and time ...ECHO Cleaning finished %MOD% on %DATE% at %TIME% >> %LOG%REM *	Output log file to console ...TYPE %LOG%@ECHO:REM *	Display location of log file and wait for user input to close CMD window ...ECHO The log file for this cleaning process was stored here:@ECHO:ECHO %LOG%PAUSEREM *********************************************************************************REM *****		End of batch commands, exit CMD window.			*****REM *********************************************************************************:END


Regards,

-RMWChaos
User avatar
Avril Louise
 
Posts: 3408
Joined: Thu Jun 15, 2006 10:37 pm

Post » Tue Aug 17, 2010 1:10 am

Well right off - yes it does address the parenthetical named plugins.

I just downloaded many town and city mods - will be cleaning and packaging them over the next few days. I'll be sure to let you know of any issues.

Hopefully none.

Thanks a bunch.
User avatar
Hannah Barnard
 
Posts: 3421
Joined: Fri Feb 09, 2007 9:42 am

Previous

Return to III - Morrowind