What's new in MyDefrag (formerly JkDefrag) 4.3.1

May 21, 2010
  • Added the Windows "bootstat.dat" file to the build-in list of special exceptions.
  • To my great chagrin I have found that some programs can crash (most notably MySQL and uTorrent) if the disk on which they have open files is dismounted with the MyDefrag DismountVolume command. The command was used in the DataDisk scripts that were introduced in the previous version. I have now removed it.

New in MyDefrag (formerly JkDefrag) 4.3.0 (May 20, 2010)

  • Added the MoveUpToZone fileaction.
  • Changed the NTFS scanner so it will now always use 512 bytes for the USA fixup. Previously it used the number of bytes per sector, which is 512 bytes for most harddisks, but it appears that NTFS also uses 512 for ultra-big harddisks, even though they have a different number of bytes per sector.
  • Added some code to SelectNtfsSystemFiles() to protect the program against infinite loops in data on the disk.
  • Fixed a bug that caused MoveToEndOfDisk() not to display a progress percentage.
  • Changed the ExcludeVolumes setting. It can now be used multiple times in a script.
  • Documented the "/TASKS" installer commandline option.
  • Added the SkipBlock option to all the SortBy fileactions.
  • Added the ExitIfTimeout setting.
  • Added the bouncing box display mode to the screensaver.
  • Added a special exclusion for the "$dcsys$" file used by DiskCryptor so MyDefrag will never move this file. The exclusion is not really needed because the file is protected by the DiskCryptor driver, but I have added it anyway, just in case.
  • Changed the way how variables can be defined and changed. Previously the syntax was "NAME=VALUE", but this caused undesirable error messages in case of a syntax error. Variables can now be defined and changed with the SetVariable command.
  • Several improvements in error reporting. One of these is that the regular MyDefrag version will no longer ask the user to post the debug logfile on the forum.
  • The ImportListFromProgramHints fileboolean will now ignore hint files that are older than 30 days.
  • Changed the contents of the "date" variable from "2010/12/31" into "2010-12-31". The old contents could not be used for filenames.
  • The installer will now create a daily scheduled task by default. Previously the default was not to create the task.
  • Added the "DataDiskDaily.MyD", "DataDiskWeekly.MyD", "DataDiskMonhtly.MyD", "Daily.MyD", and "Monthly.MyD" scripts. Renamed the "OptimizeDaily.MyD" script into "SystemDiskDaily.MyD", "OptimizeWeekly.MyD" into "SystemDiskWeekly.MyD", and "OptimizeMonthly.MyD" into "SystemDiskMonthly.MyD".
  • The installer now creates two scheduled tasks, a daily task and a monthly task.
  • Fixed a problem in the ZoneSize and ZoneBegin script variables.

New in MyDefrag (formerly JkDefrag) 4.2.9 (Mar 7, 2010)

  • Added a check to MoveToEndOfDisk to exit more quickly if the program is stopped prematurely
  • Fixed an installation bug that causes an "unable to execute file" error for the MyDefragScreenSaver.scr file
  • Changed the MoveToEndOfDisk fileaction so it will skip a file faster if there is no gap large enough above the file
  • Changed the MoveToEndOfDisk fileaction so it will stop faster when MyDefrag is stopped by the user
  • Fixed a bug that limited the value of constant numbers in a script to 2147483647
  • The ZoneBegin will no longer be automatically moved by a zone that contains a MoveToEndOfDisk fileaction
  • Removed the automatic disk filters from most of the default scripts. For example, the script for flash memory disks will now run for all the selected disks, and not only for removable disks
  • Fixed a problem where enlarging a gap for FastFill would be extremely slow if the file to be moved away was a NTFS compressed file
  • Fixed a bug in MaxRunTime statement that would cause it to always use zero as maximum runtime
  • Fixed a bug that could cause the subroutine that enlarges gaps for FastFill(WithShuffling) to move items that were already processed (placed in a previous zone)
  • Fixed a bug in the grammar that prevented the WhenFinished(Shutdown) setting from accepting the sub-options
  • Fixed 2 bugs in string variables
  • Changed PreventScreenSaving() into SetScreenSaver
  • Changed PreventPowerSaving() into SetScreenPowerSaver
  • Changed the subroutine that vacates the NTFS reserved area, Previously it would not count NTFS reserved area free space that was already there, resulting in unnecessary data movement
  • Fixed a bug in NTFS scanner so it will now load a minimum of 1 sector when loading the first record of the MFT. On ultra-big harddisks the size of an MFT record (1 kilobyte) can be smaller than the number of bytes per sector
  • The ImportListFromProgramHints fileboolean is now oompatibel with Windows XP

New in MyDefrag (formerly JkDefrag) 4.2.8 (Mar 7, 2010)

  • Fixed a bug in the grammar of the MaxRunTime statement. It can now be used multiple times in a block, as intended.
  • Added a logfile footer with the finishing time and total running time.
  • Added ExcludeVolumes(CDRom(yes)) to the settings, to hide the cdroms in the the MyDefrag script chooser window.
  • If MyDefrag is started with some volumes names ("MyDefrag.exe -v C: -v D:") then the script chooser now only displays those volumes.
  • Added support for volume device names, for example "\Device\HarddiskVolume1".
  • Added the ImportListFromProgramHints fileboolean.
  • Added several options to WhenFinished, such as Hibernate, Standby, and WarnUsers.
  • Fixed a problem in the calculation of the ZoneSize and ZoneBegin numbers.
  • Changed the selection criteria of FastFill (more favor files high on the disk) to move less data and finish quicker.
  • Changed the installer so the association between MyD scripts and a new version of MyDefrag is not deleted any more when an old version is uninstalled.
  • Fixed a bug that could cause certain VolumeBooleans to crash.
  • Added the MoveToEndOfDisk fileaction.
  • Added the NumberBetween volumeboolean.
  • Added the FileSystemType volumeboolean.
  • Added the FileLocation fileboolean.
  • Added the Minimum() and Maximum() NUMBER operators.
  • Added the RememberUnmovables setting.
  • Added the Highlight.MyD example script.
  • Added the SetColor "text" setting.

New in MyDefrag (formerly JkDefrag) 4.2.7 (Dec 16, 2009)

  • Fixed a bug that caused the screensaver to sometimes crash. The problem was an indirect result of a fix in v4.2.4
  • Fixed a bug that could cause the AddGap() action not to be executed
  • Fixed a problem that caused the gap for the NTFS reserved area to be filled again
  • Fixed a bug that could crash the program during analysis
  • Changed the behavior of the MaxRunTime setting
  • Changed the way the bootblock on FAT disks is read, to support non-default sector sizes
  • Changed the subroutine that vacates files out of the way to move NTFS compressed files more quickly
  • Added the "memory full" message to the translatable messages
  • Fixed a bug that would always create the registry keys, even if only being read

New in MyDefrag (formerly JkDefrag) 4.2.6 (Nov 14, 2009)

  • Changed the script chooser so that now all disks are deselected by default.
  • Fixed a problem in the calculation of the beginning and end of a zone. The gap that PlaceNtfsSystemFiles() makes for the NTFS reserved area was sometimes counted twice, causing the next zone to start too far up.
  • Changed the syntax so that number multipliers (such as MB and Gi) can now be used with floating-point numbers, not only integer numbers.
  • Added the RoundDown() function for calculating numbers.
  • Added extra debugging code in an attempt to find the reason why the screensaver sometimes crashes.
  • Changed the default debug level to zero.
  • Fixed a bug in MakeGap() and AddGap() that sometimes caused the program to crash.
  • Fixed a bug in the calculation of the ZoneSize number.

New in MyDefrag (formerly JkDefrag) 4.2.5 (Oct 31, 2009)

  • Added the !InstallDirectory! macro.
  • Added the !ScriptDirectory! macro.
  • Added the !ExecutableDirectory! macro.
  • It is now possible to use macros inside included files.
  • Added the ProcessPriority setting.
  • The MakeGap() and AddGap() functions before v4.2.4 would automatically scale down a gap if it would not leave enough room for the remaining data to be processed. This limiting is now removed.
  • Added an extra test to make sure the script chooser will only list "*.MyD" files, and not for example "*.MyD~".
  • Fixed an infinite loop for unmovable NTFS compressed files.
  • Fixed a bug that prevented the PreventScreenSaving() and PreventPowerSaving() settings from working if they were placed in the Settings.MyD file.
  • Fixed an infinite loop problem for extremely rare cases where the Microsoft defragmentation api returns an empty list of extends.
  • Change the tree locking timeout from 15 minutes to 2 minutes.

New in MyDefrag (formerly JkDefrag) 4.2.4 (Oct 28, 2009)

  • Changes:
  • Fixed a bug in the Title() setting that caused it not to replace macros.
  • Fixed a bug where a change in the size of the windows would not be remembered if the windows were not moved away from the top-left of the screen.
  • Added a parameter to PlaceNtfsSystemFiles to set the size of the NTFS reserved area.
  • Added the !ProgressPercentage! macro.
  • The script chooser will no longer display volumes that are excluded with ExcludeVolumes() in the Settings.MyD file.
  • Changed the syntax of the MakeGap and AddGap actions. It is now possible to place zones anywhere, they do not have to be placed one-after-another from the beginning of the disk.
  • Changed the default scripts so that the MFT, some other NTFS system files, and the directories, are now placed 30% into the data on the disk.
  • Fixed a bug in the screensaver that would not display the progress percentage.
  • Fixed a bug in the graphics code that will properly show StatusBar(path) if StatusBar(Status) is not specified.
  • Changed the vacate function so that when there are no gaps above the end of the zone, it will use the highest gap available. Before it would use the first gap available.
  • Changed the default script for the screensaver into Optimize Daily. Before it was Optimize Weekly.
  • Changed the default setting for the status bar of the screensaver into Full Status Bar. Before it was No Status Bar.
  • The positions of the windows are now also saved when the windows are moved and not only when they are resized.
  • If the Windows defragmentation API has not succesfully moved an NTFS compressed file then MyDefrag will no longer try to move the file with the alternative method, but leave the file where it is and mark it as unmovable. The alternative method is extremely slow for compressed files.
  • Made a change that should increase the chance of succesfully moving files on Windows 2000 machines. Sometimes files could not be succesfully moved and they would be marked as unmovable.
  • Fixed a bug that caused unnecessary work and unfilled gaps at the end of a zone for the SortBy fileactions.
  • The script chooser window will now list scripts that contain a syntax error. The description of the script shows the error.
  • Fixed a bug where the subroutine that determines if a file is fragmented (see the IgnoreWrapAroundFragmentation setting) would treat gaps as unmovable.
  • Fixed a bug that caused the program to skip very big FAT volumes.
  • If the Sortby fileactions find two files to be equal (for example SortBySize and files with equal size) then the program will now also compare the Inodes. This reduces the number of filemovements.
  • The !Include PATH! macro is now evaluated before any other macros, so that macros inside the included file will be processed.

New in MyDefrag (formerly JkDefrag) 4.2.3 (Oct 12, 2009)

  • Changed the FullPath fileboolean. It now has separate parameters for the directories and for the filenames, and is considerably faster.
  • Added the DirectoryPath fileboolean.
  • Renamed the !TotalDiskSpaceBytes! macro into !DiskSpaceTotalBytes!, and !TotalDiskSpaceGigaBytes! into !DiskSpaceTotalGigaBytes!. Added new macros !DiskSpaceFreeBytes!, !DiskSpaceFreeGigaBytes!, !DiskSpaceUsedBytes!, and !DiskSpaceUsedGigaBytes!.
  • Fixed a bug in the script chooser that caused it to display a different description than for the selected script.

New in MyDefrag (formerly JkDefrag) 4.2.2 (Oct 11, 2009)

  • Moved several more strings to the Settings.MyD file so they can now be translated.
  • Fixed a bug that would prevent scripts from showing up in the script chooser if the script contained a macro, for example the !Include PATH! macro.
  • Fixed a bug that would crash the script chooser if the user clicked an empty line in the box of scripts.
  • The installer no longer offers to create a scheduled task on Windows 2000. It uses the Windows "Schtasks.exe" commandline utility for that, but that utility does not exist on Windows 2000.
  • Fixed a bug in the AnalyzeOnly script where the statistics per disk were not appended, but would overwrite the entire previous statistics.
  • Changed the way the window positions are saved & restored so they cannot not end up off-screen if the screen has been resized.
  • Renamed WindowSize(normal) into WindowSize(restore), and added WindowSize(fixed).
  • Fixed a bug where the program could enter an infite loop if paused while showing the statistics. This also solves the problem of the statistics not being filled with the numbers.
  • Fixed a bug in the FastFill action where the program could go into an endless loop if a gap was followed by an unmovable file and all items above the gap were bigger than the gap.
  • Fixed a bug in a subroutine that is used by FastFill and SortBy, which was causing various erratic behaviours such as unfilled gaps and files not moved to the proper zone.
  • Fixed a bug that was causing the program to use excessive amounts of memory and in some cases to crash with a "Memory full" error.

New in MyDefrag (formerly JkDefrag) 4.2.1 (Oct 2, 2009)

  • Fixed a bug where a StatusBar() command in a script would turn off the statusbar in the screensaver, irrespective of the choice made in the screensaver settings dialog.
  • Added the script- and disk-selection menu.
  • The program now remembers the size and position of the window on the screen.
  • The Settings.MyD script is now always executed by the program itself, and needs no longer be called from within a script.
  • Moved the translations to the Settings.MyD script, and removed the Language.MyD script.
  • Hardened the screensaver against improper installations, for example when the executables have been copied to another machine (without using the MyDefrag installer).
  • Fixed a bug where the program could get confused when filling a zone and start filling from the beginning of the disk, when it encountered an NTFS compressed file.
  • Changed the SelectNtfsSystemFiles() so it also selects all files in all subfolders the $Extend folder. Previously it only selected files in the base $Extend folder, and only filenames than began with "$".
  • Strengthened the behavior if the Microsoft defragmentation API refuses to move a file into a gap. For example the sorted placements will now skip the gap after more than 10 failures.
  • The WhenFinished(shutdown) and WhenFinished(reboot) settings are no longer executed when a script is cancelled.
  • Fixed a problem in the scrolling and zooming calculations.

New in MyDefrag (formerly JkDefrag) 4.2.0 Beta (Sep 14, 2009)

  • Many internal changes that will speed up the program, especially when vacating files to make room, but also in other areas. This however is at the cost of more memory usage. The changes affect almost every aspect of the program, which is why this is a beta.
  • Fixed a bug that prevented the program from analyzing and processing FAT disks.
  • Lengthened the interthread timeout from 1 to 15 minutes. The program uses locks to prevent the threads from simultaneously changing internal data. If locking takes too long then the program will exit.
  • Fixed a bug in the FastFill(WithShuffling) fileaction that could in some cases result in all files above the unfillable gap to be seen as unmovable.
  • Fixed a bug where the program would look for subscripts in the directory of the Language.MyD file, instead of the directory of the main script.
  • Added Simplified Chinese translation.
  • Added Brazilian Portuguese translation.
  • Added Greek translation.
  • Fixed a bug in the screensaver where the pull-down list of alternate screensavers on Windows 2000 was only 1 line high, making it like as if there was only 1 entry.
  • Fixed a bug where the paths would be missing the backslash just after the drive letter.
  • Added the StatusBar setting.
  • Renamed the "SlowOptimize.MyD" script into "OptimizeMonthly.MyD".
  • Renamed the "FastOptimize.MyD" script into "OptimizeWeekly.MyD".
  • Renamed the "FastUpdate.MyD" script into "OptimizeDaily.MyD".
  • Added the "ConsolidateFreeSpace.MyD" script.
  • Added the !ProcessID! macro.
  • Fixed a problem that would make the menu appear initially in english instead of the chosen language.
  • Fixed a problem where the MaxRunTime() setting would be ignored if the SlowDown() setting was set to the default value of 100.
  • Fixed a bug where the IgnoreWrapAroundFragmentation() setting would crash the program if specified before a disk was analyzed.
  • Added the DiskmapFlip setting.
  • Added an option in the installer to create a shortcut on the desktop to the Daily and Monthly scripts.
  • Moved the example scripts to a separate directory.

New in MyDefrag (formerly JkDefrag) 4.1.2 (Aug 3, 2009)

  • Changes:
  • Deleted the LowMemoryUsage() setting. The program no longer caches the full paths of regular files. but still caches directories.
  • Added a new defragmentation algorithm, the old algorithm is now available as Defragment(Fast).
  • The list of fragmented files in the logfile will now show the count of wrap-around fragments, instead of the count of fragments.
  • Fixed a bug that would cause the "MyDefrag.debuglog" file to be created even if the "-d 0" commandline parameters was specified.
  • Added the SortByNewestDate() fileaction.
  • Fixed a bug that prevented MyDefrag from processing files that were encrypted by another userid than the userid that was running MyDefrag.
  • Fixed a bug in the AddGap() fileaction. It created gaps that were too big.
  • Added the IgnoreWrapAroundFragmentation setting.
  • Gaps are now also skipped by the wrap-around fragmentation analyzer.
  • Added the FastFill(WithShuffling) option.
  • Added some code to protect against circular folders.
  • Made some changes in how the screensaver will stop in various circumstances.
  • Changed the way that the !RunTime! macro is calculated.
  • Fixed a bug that could cause an infinite loop on very full harddisks when trying to move files out of the way (vacate).
  • Enlarged the width of short numbers from 7 to 11 characters.

New in MyDefrag (formerly JkDefrag) 4.1.1 (Jul 26, 2009)

  • Optimized the subroutine that searches for contiguous fragments.
  • Fixed a bug that would prevent the program from running (immediate finish) without a proper error message, if there was a directory called "Settings" anywhere in the path. Also added some extra error messages in case there is a problem executing a script.
  • Optimized the subroutine that vacates items out of the way.
  • Disabled the OtherInstances(ask) setting for the screensaver.
  • The "F1" key now looks for the manual in the installpath, instead of always using "C:Program FilesMyDefrag v4.XManual.chm".

New in MyDefrag (formerly JkDefrag) 4.1 Final (Jul 22, 2009)

  • Added a special version of the SetFileColor() setting that can be used outside a VolumeSelect, for example in the Settings.MyD script.
  • It is now possible to use macro's in any STRING.
  • Added some keyboard keys: "F1" Open the manual. "Space" Pause / Continue "CTRL-C" Copy the path of the file under the mouse to the clipboard. "+" Zoom in. "-" Zoom out. "Arrow up" Scroll 8 pixels up. "Arrow down" Scroll 8 pixels up. "Home" Scroll to top. "End" Scroll to bottom. "Page Up" Scroll up half a page. "Page Down" Scroll down half a page.
  • Added the "!RunTime!" macro.
  • Added the "!Include!" macro.
  • Added Japanese translation.
  • Fixed the screensaver so it will add double-quotes around the name of the selected script.
  • Made some changes in PreventScreenSaving() and PreventPowerSaving() in the hope of solving a bug where running MyDefrag disables screen- and powersaving in Windows.
  • Added some extra paths to find scripts.
  • Added Slovenian translation.
  • Changed the location of the debug logfile. Previously it was the current directory, now it is the installation directory. Also changed the name of the screensaver debug logfile into "MyDefrag.debuglog" (previously "MyDefragScreenSaver.debuglog").
  • Added Portuguese translation.
  • Changed the default for the OtherInstances() setting from "exit" into "ask".
  • Replaced the ExitIfOnBatteryPower() command with the BatteryPower() setting. Previously the program would exit without warning if the computer was running on battery power. Now it will show a popup window asking if it should continue.
  • Changed the vacate policy. If there is no gap large enough for the item to be vacated then the program will now take the largest gap available, instead of the first gap.
  • Created a workaround for the SortByName() fileaction and the root directory on NTFS volumes. Previously it would ignore the root directory, now it will always place the root directory as the very first directory.
  • Added Turkish translation.

New in MyDefrag (formerly JkDefrag) 4.0 Final (Jul 17, 2009)

  • Deleted the SetPalette() setting and added the SetColor() and SetFileColor() settings.
  • Added Estonian translation.
  • Added Russian translation.
  • The "$BadClus:$Bad:$DATA" file on NTFS disks is no longer listed in the logfile in the "These items could not be moved", "These items are fragmented", and "The 25 largest items on disk" lists.
  • Fixed a bug in the graphics code for drawing files on the diskmap. If a file spanned more than 2 lines on the display then the top line (the end of the file) would always be drawn all the way to the right side of the display.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 12 (Jul 17, 2009)

  • Some changes in the SortBy subroutines to improve the results on very full harddisks.
  • Reorganized the frequently asked questions.
  • Added the directory of the main script as a searchpath for subscripts.
  • Added Italian translation.
  • Added more memory checks. If the computer memory is full then the program will now exit, previously it would try to continue with whatever it had.
  • Removed the MemWatch debugger.
  • Fixed a memory cleanup bug.
  • Fixed a locking problem in the subroutine that analyzes the extends of a file (GetFragments).
  • Added the SelectNtfsSystemFiles() fileboolean and PlaceNtfsSystemFiles() fileaction, and changed all the default scripts so that all the NTFS system files are now moved to the beginning of the disk, instead of only the $MFT.
  • Added an "Edit" item to the right-click context menu for .MyD files, in the MyDefrag installer.
  • Added Traditional Chinese translation.
  • Deleted the WriteLogfile.MyD script and placed WriteLogfile() and AppendLogfile() commands directly in the scripts. This fixes the bug where the logfile would only contain data for the last processed disk.
  • Fixed a bug where WriteLogfile() could write the string "(null)" to the logfile if no volume was analysed.
  • Added the !ScriptTitle! and !ScriptDescription! macros.
  • Added a list of multipliers for NUMBER's. It is now possible to write for example "100M" instead of "100000000".
  • Changed the default debug level.
  • Added an option to the installer to create a scheduled task.
  • Removed the 2 extra NTFS reserved zones, they are no longer needed. The program used 2 extra NTFS zones internally to solve a problem with hidden system files, ever since JkDefrag version 2. MyDefrag handles the hidden files differently and the legacy code for these virtual zones is no longer needed.
  • Disabled the "Pause" script command for the screensaver.
  • Fixed a bug in the screensaver, after finishing the black screen would not entirely fill the display.
  • Fixed a bug in the screensaver where it would popup an "I have crashed" window after finishing.
  • Fixed a bug in the screensaver where it ignored the alternate screensaver setting.
  • The logfiles from the screensaver are now written to the directory where MyDefrag is installed.
  • The size of the characters in the display now depends on the size of the display, instead of always a fixed size.
  • Fixed a bug where the first 4 clusters of the $MFT would display as black (empty disk space).

New in MyDefrag (formerly JkDefrag) 4.0 Beta 11 (Jul 17, 2009)

  • Bugfix (again) for the NTFS scanner. The changes in internal data structures in v4.0b9 caused it to malfunction on NTFS disks where the bulk of the MFT is stored in an external attribute list.
  • Fixed the problem where the program would not strip the virtual fragments from the "$BadClus:$Bad:$DATA" file.
  • Added the MemWatch debugger in an attempt to find the elusive memory cleanup problem.
  • Added the !BadClusterList! and !BadClusterTotal! macros.
  • Fix for the MoveItem3/DrawDiskMap problem, where the program would generate a debug crash after a 10 second timeout. I suspect that the problem only occurs when the computer is extremely slow. The timeout is now 60 seconds.
  • Added a section to the installer so users can pick and choose the different components.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 10 (Jul 17, 2009)

  • Bugfix for the NTFS scanner. The changes in internal data structures in v4.0b9 caused it to malfunction on NTFS disks where the bulk of the MFT is stored in an external attribute list.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 9 (Jul 17, 2009)

  • Rewrite of the FastFill() code. It fills gaps better, is much faster, and uses less CPU and memory.
  • Added an extra test to the Mounted() volumeboolean. Previously only the FSCTL_IS_VOLUME_MOUNTED system call was used, now it first looks if a volume has a mountpoint.
  • Fixed a bug where the program would generate a debug crash in DrawProgressPercentage() when the context was locked by AnalyzeNtfsVolume2().
  • Added Polish language.
  • Fixed a bug where the debugging code would generate a crash when the statistics window happened to be updated at the same time as the AppendLogfile() or WriteLogfile() script command was executed.
  • Added the DismountVolume() script command.
  • Added the DeleteJournal() script command.
  • Many changes in internal data structures in an attempt to find the elusive memory cleanup bug.
  • Fixed a bug where the program could crash when calculating the statistics for a disk with a large number of gaps.
  • Fixed a bug where the program could sometimes crash when trying to find a combination of files to perfectly fill a gap. The problem mainly occurred on disks with a huge number of very small files.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 8 (Jul 17, 2009)

  • Documented the MyFragmenter commandline utility.
  • Added the "!ZONE*!" macros
  • Renamed the "!UTF*!" macros into "!FILES*!".
  • Added special exception: if the WindowSize is "invisible" and WhenFinished is "wait", then the program will "exit" instead.
  • Linked the screensaver with an old version of the Microsoft screensaver library, to solve the "The procedure entry point ChangeWindowMessageFilter could not be located in the dynamic link library USER32.dll" problem.
  • Added Czech language.
  • Fixed the problem with the ExcludeFiles and ExcludeVolumes settings so they can now also be used in scripts called from the main script with RunScript.
  • Some special system files and the files that are excluded by ExcludeFiles() are no longer listed in the "MyDefrag.dat" file. Previously the list could get very long, and the program needed a lot of time to test these files (just after analysis).
  • Fixed a bug where MyDefrag would not close the filehandle if the Microsoft defragmentation API refused to move the file.
  • Fixed a bug where the SortByName() fileaction would only sort by filename on FAT volumes, instead of by full path.
  • Renamed the SetBeginOfZone() volumeaction into MakeGap(), and renamed all it's options.
  • Added the AddGap() fileaction.
  • Changed the way that encrypted files are opened.
  • The heuristic test that detects if directories are unmovable is now limited to FAT volumes.
  • Added code in several places to prevent "divide by zero" crashes.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 7 (Jul 17, 2009)

  • Fixed a bug where the program could not find gaps at the last 8 clusters of a volume.
  • Added the MoveDownFill() fileaction.
  • Changed the progress messages, new translations needed.
  • Fixed the double-backslash at the beginning of paths.
  • Fixed the problem where the program could sometimes crash while cleaning up stuff from memory.
  • Renamed the ReclaimMFTzone() volumeaction into ReclaimNtfsReservedAreas().
  • The ReclaimNtfsReservedAreas() volumeboolean now ignores special NTFS files such as $MFT, $MFTMirr, $AttrDef, $Secure, $UpCase, $LogFile, and $Bitmap.
  • Added the !WorkingDirectory! macro.
  • Built the screensaver.
  • Increased the maximum number of iterations for "Calculating the end of the zone" to 100 (previously 10).
  • Documented the "Debug()" script setting.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 6 (Jul 17, 2009)

  • Recompile of v4.0b5. Somehow the distribution of v4.0b5 contained binaries with test code.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 5 (Jul 17, 2009)

  • Changed the DATETIME string into grammar. This affects the LastAccess(), LastChange(), and CreationDate()filebooleans, and the Pause() and MaxRunTime() settings, old scripts have to be changed by removing the quotes around the datetime's.
  • Added "now" as a valid datetime.
  • Fixed a bug in the SortBy*** fileactions, it crashed when it tried to clean up full path names from memory.
  • Fixed a bug where the $MFT was ignored by the SortByName fileaction.
  • The WhenFinished(shutdown) and WhenFinished(reboot) setting is no longer executed when the user cancels the program.
  • The program now pre-calculates the number of zones and shows it in the top of the window. Empty zones (with SetBeginOfZone) are now counted as a zone.
  • Fixed the crash report. Microsoft has disabled SetUnhandledExceptionFilter() function without saying so in the manpage. I am now using __try/__except.
  • Added a popup window if the program crashes, asking the user to post the debug logfile on the forum.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 4 (Jul 17, 2009)

  • Fixed a bug in the DATETIME strings (again).
  • Fixed the bug in the PreventScreenSaving() setting. The setting did not work before, and running MyDefrag would totally disable the Windows screensaver.
  • Added the SetStatisticsWindowText() setting.
  • Added the WriteLogfile() and AppendLogfile() settings.
  • Added the WriteLogfile.MyD script.
  • Added a check in the subroutine that moves items to protect against moves with a size of zero.
  • The "-d" commandline parameter is now executed before the other commandline parameters are interpreted.
  • The Language.MyD script is now executed after the commandline parameters are interpreted.
  • Changed the name of the debug logfile into "MyDefrag.debuglog".
  • Changed the LastAccess() fileboolean so it does not always return TRUE if the Windows NtfsDisableLastAccessUpdate setting is active. See the LastAccessEnabled() fileboolean.
  • Changed the sorted placement fileactions so they cleanup filenames if LowMemoryUsage() is on.
  • Changed numbers in several places so they use thousands-separators.
  • Fixed a bug in SortByName(Descending), the ordering was wrong. SortByName(Ascending) was not affected.
  • Added menu access keys. Pressing ALT+R for example will open the Run menu, and then pressing ALT+P will "Pause".
  • Correct a 1-pixel offset in the crosshairs in the diskmap.
  • Fixed a bug in the LastChange time of files. The program used the MftChangeTime instead of the FileChangeTime.
  • Fixed a bug in the code that reads the list of unmovable files.
  • Added a test to SortBy***() fileactions to skip unmovable files.
  • Rewrite of the code that vacates files out of the way for the SortBy***() fileactions. It analyzes faster, and only moves relevant fragments out of the way, instead of entire files.
  • Added code to hide the fragmentation of files that are wrapped around an unmovable file.
  • Renamed the Absolute() parameter of the SetBeginOfZone() volumeaction into AtMegabytes(), renamed PlusPercentageOfDisk() into PlusPercentageOfVolume(), renamed PlusPercentageOfDiskFree() into PlusPercentageOfVolumeFree(), added AtPercentageOfVolume(), AtPercentageOfVolumeFree(), AtPercentageOfVolumeUsed(), AtCluster(), PlusPercentageOfVolumeUsed(), PlusClusters(), RoundUpMegabytes(), RoundUpClusters(), RoundUpPercentageOfVolume(), RoundUpPercentageOfVolumeFree(), and RoundUpPercentageOfVolumeUsed().
  • Replaced PlusPercentageOfVolume() in all the scripts by RoundUpToPercentageOfVolume(). This will lock zones into their place as long as there is enough room, greatly reducing the number of file movements.
  • Changed the SortByName() fileaction. It now creates the sorted list a lot faster, and uses a lot less memory.
  • Added zone number and action text to the display.
  • Added download counter to the website.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 3 (Jul 17, 2009)

  • Deleted all the commandline parameters (no longer downward compatible with JkDefrag v3) and added new commandline parameters "-m" and "-v".
  • Removed the /* ... */ macros and replaced with !...! macros. Old MyD scripts will no longer work.
  • Added the CommandlineVolumes() volumeboolean.
  • Added environment macros.
  • Changed the installer so it now includes the version number in the default installation directory.
  • Changed the installer so it will ask the user if he wants to overwrite an existing "Setup.MyD" script.
  • Moved the scripts to the "Scripts" subdirectory.
  • Removed the CreationOrChange() fileboolean, it was superfluous.
  • Added the ExcludeVolumes() setting.
  • Added the ExcludeFiles() setting.
  • Reversed the order in which filebooleans are evaluated, they are now evaluated from left to right.
  • Added Hungarian (Magyar) language.
  • Added drag-and-drop facility. If a .MyD script is dragged and dropped onto the MyDefrag interpreter then it will be executed.
  • Fixed a bug in the Fragmented(), Archive(), Directory(), Compressed(), Encrypted(), Hidden(), NotToBeIndexed(), Offline(), Readonly(), Sparse(), System(), Temporary(), Virtual(), and Unmovable() filebooleans.
  • Changed the definition of the DirectoryName() fileboolean. Files are now selected even when the directory has already been processed.
  • Fixed the text in the statistics window, and vertical scrolling is now sticky, horizontal scrolling not (yet).
  • Fixed a bug that caused the root directory on NTFS volumes to be unmovable.
  • Changed the FastOptimize.MyD script so it will defragment the spacehogs.
  • Fixed a bug that would resize the window to the default size when a script was finished.
  • Added the RunScript() keyword.
  • Changed the Settings.MyD script from hardcoded into a RunScript() call.
  • Added the LastAccessEnabled() fileboolean.
  • Fixed a bug in the DATETIME strings.
  • Fixed a memory leak bug.
  • Changed the default debug level into fatal error messages, warning messages, and basic information messages.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 2 (Jul 17, 2009)

  • The installer now let's the user choose a language.
  • Added the "Setting.MyD" script.
  • Bugfix: Windows would popup a window with an error message for volumes that are not mounted, such as a floppy.
  • Bugfix: if the user specified something else than a volumename on the commandline (but for example a full path for a single file) then the program would not process that volume.
  • Scripts can now also be in UTF-8 and ANSI.
  • If a script contains the Unicode BOM then it is now ignored.
  • Changed the association between "*.MyD" files and the MyDefrag script interpreter so it now accepts more than 9 parameters.
  • Changed the way the program looks for scripts. If the script is not found in the current directory or the PATH, then the program now also looks in the directory where the script interpreter is, and in the "C:/Program Files/MyDefrag" folder.
  • Changed the default for the MyDefrag window visibility, it now always becomes visible unless a script changed the default with the WindowSize() setting.
  • Bugfix in the SetBeginOfZone() grammar. It now accepts multiple parameters, as it was intended.
  • Added the FileMoveChunkSize() setting.
  • Added a test for Windows's NtfsDisableLastAccessUpdate setting. If active then the LastAccess() function will always return TRUE.
  • Added Swedish (Svenska) language.
  • Added Finnish (Suomi) language.
  • Added Danish (Dansk) language.
  • Added German (Deutsch) language.
  • Added Spanish (EspaƱol) language.
  • The program will now show long pathnames by default.
  • The statistics window now uses a smaller font.
  • A change in the colors of the MyDefrag window in the hopes it will fix a small display problem on computers where the Windows theme has been changed.
  • The ImportListFromBootOptimize() fileboolean is now no longer limited to the same drive as where the "layout.ini" file is located.
  • Added the Label() volumeboolean.
  • The Title() setting can now be used anywhere in a script.
  • Changed the contents of the statistics window.
  • Fixed a bug in the logfile, in some editors it showed an empty line between every textline.
  • Fixed a bug in the spacehogs, files older than 1 month were not selected as a spacehog.

New in MyDefrag (formerly JkDefrag) 4.0 Beta 1 (Jul 17, 2009)

  • Only in Dutch, no other languages.
  • Memory leaks.
  • The program can crash when it starts to process a new disk.
  • Only tested on Win2K, Server 2003, and Vista (32 and 64 bit).
  • Screensaver not available yet.
  • Only debug logfile, no regular logfile.
  • Does not yet defragment very large files on very full disks.
  • If there is a volume on the computer that is not mounted then a error windows pops up.

New in MyDefrag (formerly JkDefrag) 3.36 (Aug 31, 2008)

  • Reverted back to an old Microsoft Screensaver library. The 2008 compiler has a library that is incompatible with Windows XP ("The procedure entry point ChangeWindowMessageFilter could not be located in the dynamic link library USER32.dll").
  • Fixed a problem with extremely long path names.

New in MyDefrag (formerly JkDefrag) 3.35 (Aug 27, 2008)

  • Upgraded to the Microsoft Visual Studio 2008 compiler.
  • Logfile is now written in UTF-8, it used to be ANSI.
  • Changed the default font into a smaller font.
  • A change in the display code to respond faster to multiple redraw requests, for example when the users resizes the window.
  • Rewrite of the subroutine that finds combinations of files to fill a gap, to make it faster.
  • Changed the algorithm for "-a 6" (move to end of disk) to better fill gaps.
  • Changed the way disks are accessed to accomodate special kinds of disks, such as virtual and encrypted disks.
  • Bugfix in the screensaver for very long commandlines.
  • Change in the disk analyzation code to fix a "zero bytes per cluster" problem.

New in MyDefrag (formerly JkDefrag) 3.34 (Feb 1, 2008)

  • Re-fixed the "DisableDefaults" bug.
  • Partial undo of the change that uses the mountpoint of a volume. It was causing problems during the automatic scanning for disks to be defragmented.
  • Pushed the "Zone calculation" messages down to debug level 4.
  • Fixed the VisualC example project.

New in MyDefrag (formerly JkDefrag) 3.33 (Dec 27, 2007)

  • Fixed a bug in the Windows version that for some users caused the display of the diskmap to get stuck.
  • Fixed a bug in the forced-fill optimization that caused the program to skip fragments that were left by filling a gap with a part of the fragment.
  • If the volumename of a disk cannot be determined then the program will now fallback to using the mountpoint of a volume to open a handle.
  • If the user specifies a short input mask without a wildcard, for example "C:" or "C:", then the input mask is rewritten as "C:*".
  • Fixed a bug where the special "DisableDefaults" spacehogs mask only disabled the masks, but not the "Files bigger than 50 megabytes"" and "Files not accessed in the last month" criteria.
  • Bundled some language-specific SpaceHogs masks into "?:*Installshield Installation Information*".
  • Moved the "Volume ID" message for FAT disks from debug level zero to 6.

New in MyDefrag (formerly JkDefrag) 3.32 (Dec 3, 2007)

  • Fixed a bug in the FAT scanner that caused the program to crash on volume names shorter than 9 characters.
  • Simplified the rules that automatically change the mask that selects which disk/folders/files must be processed. It now simple prepends and appends an asterisk if there is no asterisk yet.
  • Some small changes in the graphics code.
  • Fixed a bug in the commandline version that showed zone numbers 0...2, instead of 1...3.

New in MyDefrag (formerly JkDefrag) 3.31 (Dec 3, 2007)

  • Fixed a problem in the Windows version, it now redraws the diskmap when the user changes the size of the window.
  • Added special cases to the exclude masks to recognise a drive letter without an asterisk, for example "c", "c:", or "c:".

New in MyDefrag (formerly JkDefrag) 3.30 (Dec 1, 2007)

  • FAT disks are now analysed by directly reading the FAT from disk. This is a lot faster, and finds more system files.
  • Changes to the graphics routines in the Windows and screensaver versions. The screen is now updated faster and more efficiently.
  • Added the "average begin-end distance" statistic to the report.
  • The commandline is now scanned for the "-l" logfile option before anything is written to the logfile.
  • Changed the progress counter for the Fixup phase.
  • Added a second fixup phase after optimizing "-a 3" to catch files that could not be moved the first time.
  • Bugfix for automatic processing of volumes that are mounted on a directory instead of a drive letter.

New in MyDefrag (formerly JkDefrag) 3.29 (Nov 16, 2007)

  • Total rewrite of the "-a 7"..."-a 11" sorted optimizations.
  • Total rewrite of the code that calculates the begin of the zones.
  • Excluded files are no longer listed in the "These items could not be moved" report.
  • Bugfix in the Windows version for very long filenames.
  • Added exception to ignore the Symantec GoBack configuration files.
  • Added protection against defragging hybernated disks.
  • Added to the list of build-in spacehogs: ?:windows.old* / *.dvr-ms / *.wmv

New in MyDefrag (formerly JkDefrag) 3.28 (Nov 2, 2007)

  • Restored the manifest file. I did not notice that the compiler had overwritten the manifest file, causing JkDefrag not to start on Windows XP

New in MyDefrag (formerly JkDefrag) 3.27 (Nov 2, 2007)

  • Changed action "-a 2" into defragment only (no fixup), and moved the "fixup" for "-a 3" to phase 3.
  • If the program detects that directories cannot be moved (on FAT disks) then messages about unmovable directories are suppressed in the status report.
  • Added code to the screensaver that instructs Windows not to go into power saver mode while the program is running.
  • Changed the percentage progress counter for "fixup".
  • The program will now always exit with return code zero (success), instead of 1 (error).
  • Bugfix for infinite loop in the "-a 5" action (force together).
  • Removed the extraneous "already has a list of fragments" error message in the logfile.
  • Added the special exception to ignore the DriveCrypt "?:BootAuth?.sys" files to the NTFS scanner.
  • Bugfix for a memory leak in the NTFS scanner.
  • Bugfix in the status report for the number of fragmented files.

New in MyDefrag (formerly JkDefrag) 3.26 (Sep 19, 2007)

  • Undo of one of the changes from v3.25 in the graphics code, screensaver only. The changes worked fine for the Windows version, but showed a completely black screen in the screensaver....

New in MyDefrag (formerly JkDefrag) 3.25 (Sep 19, 2007)

  • Fix for reading the "$MFT::$BITMAP". In some very special cases the bitmap would only be partially read, causing files on disk to be ignored.
  • Fix for the "::$SECURITY_DESCRIPTOR" problem. Directories with a special security attribute would get this string appended to their name, making them unmovable.
  • Reorganised the code for the out-of-sequence fix (see previous releases).
  • Two fixes in the graphics subroutines. Some users reported that the display sometimes froze during normal operation.
  • Excluded items are no longer listed in the "These items could not be moved" and "These items are still fragmented" reports.
  • The error message "Cannot find volume name for mountpoint: %s" was changed into "Ignoring volume '%s' because it is not a harddisk.".
  • Added "?:WINDOWSsystem32dllcache*" to the default list of SpaceHogs.
  • For programmers: Addedd message 57 to the messages.

New in MyDefrag (formerly JkDefrag) 3.24 (Sep 3, 2007)

  • A final fix for the out-of-sequence problem. Beta tests by users show that the problem is now finally fixed.
  • Bugfix for missing parameter in status message that caused JkDefrag to crash when it wanted to display the "Cannot find volume name for mountpoint" message. This message can happen when scanning the system for disks and a special volume is encountered such as a "subst" volume.
  • The "25 largest items on disk" list in the statusreport is now sorted by (used) clusters instead of by (allocated) bytes.
  • Fixed the progress percentage during analysis of NTFS volumes. It was counting too fast and reached 100% before analysis was complete.
  • The "unmovable", "still fragmented", and "largest 25" lists in the report are now suppressed if empty.
  • Directories on FAT disks cannot be moved, this is a known limitation of the Microsoft defragmentation API and not a bug in JkDefrag. To speed up things the program will now count the number of failed tries to move directories, and when it reaches 20 will ignore all directories.

New in MyDefrag (formerly JkDefrag) 3.23 (Sep 1, 2007)

  • Yet another fix of the out-of-sequence problem that keeps plaguing a small set of users. I have deleted the previous fixes and added code that will delay the processing of the AttributeList in the MFT until the Data attribute has been processed.
  • Fixed the test for the NtfsDisableLastAccessUpdate registry key (see v3.19). If the key is not available the program defaulted to ignoring the LastAccessTime.

New in MyDefrag (formerly JkDefrag) 3.22 (Aug 31, 2007)

  • Yet another fix of the fix. The out-of-sequence rundata on these a-typical disks caused yet another error. If have now made a special exception for the MFT to accept even out-of-sequence rundata.

New in MyDefrag (formerly JkDefrag) 3.21 (Aug 31, 2007)

  • Fixed the fix in v3.20 for the problem that caused the NTFS analysis code to malfunction on a-typical NTFS disks. The fix only worked on disks with a cluster size of 4096 bytes, it now works on all disks.

New in MyDefrag (formerly JkDefrag) 3.20 (Aug 30, 2007)

  • The NTFS analysis code now also interprets Inodes 12 to 23.
  • Fixed a problem that caused the NTFS analysis code to malfunction on a-typical NTFS disks.
  • The icon now also shows in the taskbar and the upper-left-hand corner of JkDefrag's window.
  • Softened the messages generated by the NTFS analysis code.

New in MyDefrag (formerly JkDefrag) 3.19 (Aug 28, 2007)

  • Fixed a bug that caused the program to crash at various places during execution, mostly on Windows XP.
  • If the NtfsDisableLastAccessUpdate registry key is set then the program will not look at the LastAccessTime when testing if a file is a SpaceHog.
  • Added to the default list of spacehogs: ?:I386* / *.old / *.bak

New in MyDefrag (formerly JkDefrag) 3.18 (Aug 27, 2007)

  • The icon now has a transparant background.
  • Icon added to the X64 JkDefrag and JkDefragCmd binaries.
  • Bugfix in the calculation of the begin of the zone's. The old method did not take excluded files into account.
  • Changed two buffers from being allocated with "new" into "malloc". I hope this fixes the weird "ModName: ntdll.dll ModVer: 5.1.2600.2180" crash that some users are experiencing on XP.

New in MyDefrag (formerly JkDefrag) 3.17 (Aug 25, 2007)

  • NTFS disks are now analysed by directly reading the MFT from disk. This is a lot faster, and finds more system files.
  • NTFS streams are now supported and will be defragged and optimized.
  • Added an icon.
  • Added a version info resource to the executables.
  • Added a manifest so Vista will always run JkDefrag with administrator privileges.
  • Added support for short filenames. The masks now also work for short names, for example "PROGRA~1" (instead of "Program Files").
  • Spacehogs are now shown in dark-green, regular files in light-green. Allocated space is now shown in grey, instead of black.
  • Bugfix in redrawing the diskmap, to properly handle redraw-requests while redrawing.
  • Files larger than 1 gigabyte are now closed and re-opened at 1 gigabyte intervals.
  • Change in the fast optimize algorithm. When a gap cannot be perfectly filled the program now takes the highest file on disk that will fit, instead of the largest file. This reduces the amount of data moved and optimization will finish quicker.
  • Added a special exception for the "?:BootAuth?.sys" files used by DriveCrypt.
  • Added a few extra lines to the status report.
  • The logfile now shows which command line options were used.
  • Added to the default list of spacehogs: ?:RECYCLED* (FAT on 2K/XP) / ?:$RECYCLE.BIN* (Vista) / ?:WINDOWSEhome* / ?:WINDOWSFonts* / ?:WINDOWSHelp* / ?:WINDOWSIME* / ?:WINDOWSSpeech* / ?:WINDOWSSymbols* / *.chm / *.mp3 / *.pdf / *.bup / *.ifo / *.vob / *.avi / *.log
  • All instances of CHAR changed into WCHAR. This has widespread implications in many locations. I am hoping the change will fix the problem that some users have reported on weird filenames.
  • Renamed "JkDefrag.cpp" into "JkDefragLib.cpp"
  • Renamed "JkDefrag.h" into "JkDefragLib.h"
  • Renamed "JkDefragWindows.cpp" into "JkDefrag.cpp"
  • Added "ScanNtfs.cpp" and "ScanNtfs.h"
  • Several changes in the DefragDataStruct.
  • Several changes in the "Makefile" to facilitate debugging.

New in MyDefrag (formerly JkDefrag) 3.16 (Jun 22, 2007)

  • Changed the message in the docs about the screensaver under Vista, it works if User Account Control is turned off.
  • Bugfix in "-a 3" (fast optimize). It would not use Perfect Fit for gaps that were larger than all the data already processed.
  • Bugfix in "-a 6" (move to end of disk). Files in zone 1 would not be moved.
  • Added some translations of "Program Files" to the build-in list of SpaceHogs
  • Fixed a typo in the "System Volume Information" string in the SpaceHogs.
  • Fixed the displaying of the zone number, should have been 1.
  • Changed the "makefile.bat" script, "JkDefrag.exe" does not need to be linked with "JkDefragScreenSaver.res".

New in MyDefrag (formerly JkDefrag) 3.15 (Jun 15, 2007)

  • Added extra breakpoints so the program will quit faster.
  • Added special exception for Acronis OS Selector files.
  • Changes to facilitate Delphi programmers. All callbacks are now CDECL.
  • Added a Pascal example program.

New in MyDefrag (formerly JkDefrag) 3.14 (Jun 11, 2007)

  • Bugfix for the "-u" commandline option. All the "-u" masks were accidentally also processed as "items".
  • Files are now classed as a SpaceHog when their last access time is more than 30 days ago.
  • Deleted the "full" optimization ("-a 4"). For backward compatibility the program still accepts the option, but does exactly the same as for "-a 3".
  • The screensaver will now not start if it detects that the computer is running on battery power.
  • Deleted the code that disables the Windows display idle timer (screen saver) and system idle timer (power saver) in the commandline and screensaver versions.
  • Deleted message 57 from the message array.
  • Changed the meaning of the "Data->Phase" variable used by the ShowStatus() callback.
  • The ShowStatus() callback is now executed once for every zone in the "-a 3" and "-a 7"..."-a 11" optimizations.

New in MyDefrag (formerly JkDefrag) 3.12 (Jun 7, 2007)

  • Bugfix for the X64 versions.

New in MyDefrag (formerly JkDefrag) 3.11 (Jun 6, 2007)

  • Fixed a bug that caused files to be classified in the wrong zone, causing several problems.
  • Fixed a bug where the list of files was not cleared between disks.
  • Re-applied "The versions now also detect if another version is running" change from v3.9 that was accidentaly deleted in version 3.10.
  • Reduced the size where huge files are treated in segments to 1Gb, in a further attempt to work around a suspected bug in the Microsoft defragmentation api.
  • For programmers: Added strings 48...57 to the array of textstrings.

New in MyDefrag (formerly JkDefrag) 3.9 (Jun 4, 2007)

  • Added optimization methods for sorting files on disk by name, size, last access, last change, and creation time.
  • Reduced the number of steps from 6 to 3.
  • Added zoning to the Fast and Full optimization methods. Files are now placed in 3 zones with a free space between: directories, regular files, and space hogs.
  • Added "-u" commandline option to add custom masks to the list of build-in SpaceHogs masks.
  • Added a top-25 of largest files to the status report.
  • Huge files (>4Gb) are now treated in segments.
  • The versions now also detect if another version is running (windows, command line, screen saver).
  • The Windows display idle timer (screen saver) and system idle timer (power saver) are disabled while JkDefrag is running.
  • Many changes in the sources.
  • Added an example Visual project.
  • Library sources are now compatible with the UNICODE compiler setting.
  • Changes to facilitate multithreading.
  • Renamed the sources. There is now a JkDefrag.cpp and JkDefrag.h file for easy inclusion into a project.
  • Integrated the DefragInitialize function into the RunDefrag function.
  • Changed the StopProcessing subroutine, it now accepts a timeout.

New in MyDefrag (formerly JkDefrag) 3.8 (Apr 21, 2007)

  • Fix for the "infinite worm" problem in the full optimization.
  • Added "-q" commandline option to the Windows version to exit the program when it has finished.
  • Changed the "-e" exclude option to support multiple wildcards. Previously a matching subdirectory would be skipped, now all files in those directories will be scanned.
  • Changed the "-e" exclude option to support the excluding of complete disks.
  • Fixed a problem in the screensaver that prevented it from finding alternate screensavers in the Windows directory.
  • Added special exception for the "bcldr.bin" file used by the BestCrypt software by "http://www.jetico.com/".
  • Fixed a buffer size calculation in the analyzeVolume subroutine. It allocated too much memory.
  • Enlarged a buffer for writing to the logfile. Very long filenames could result in an empty message.
  • For library developers: added error message 47.