CrazyCopy Complete User Manual

image.png

CrazyCopy ™

Crazy Fast Copying

Contents

Introduction

CrazyCopy is a Crazy Fast Windows Application for Copying and Moving Folders. Copy times vary but in some benchmarks CrazyCopy can be up to 20x faster than standard Windows folder copying. From the command line CrazyCopy can be up to 3x faster than both Robocopy and Xcopy. For the CrazyCopy Performance and Benchmark Reports either follow the link at the end of this document, go to the Void-Pointer.com website, or watch the YouTube videos on Void-Pointer's channel!

Finally you can now get those SSD speeds that you paid so much money for!

But speed is not the only benefit CrazyCopy provides. CrazyCopy also offers more safety. The Folder Copy and Safe Move features verify File and Folder counts to ensure all Copies and Moves are complete. CrazyCopy's Safe Move operation (the default for Moving Folders), doesn't just move all files and folders, it first copies the Source files and folders, then it verifies the copy was successful, and only then will it remove the original Source folder. This ensures the new copy contains the same counts of files, folders, symbolic links, hard links, junctions and shortcuts as the original Source Folder.

Safe Move will never result in a partially moved folder, where the Source folder's contents are now partially in the new folder, while the rest remain in their original Source location.

With Safe Move either the Source Folder or the Destination Folder will remain completely intact, irrespective of any errors that might have stopped the Move operation, and even if the user has cancelled the Move halfway through.

It is recommended to read the CrazyCopy Quick Start Guide first to begin copying and moving folders as soon as possible! At the end of this Complete User Manual you can find a link to the Quick Start Guide. Alternatively you can click inside the Mini Log View on CrazyCopy's Main Window (See 1 below) and press F1. This will open the Quick Start Guide inside the default Web Browser (see 2 below) 

image.png

Benefits of CrazyCopy

CrazyCopy was guided by well-selected design goals leading to:

  1. Fast Folder Copying and Folder Moving, with Safety
  2. Support for all popular types of hardware storage, protocols and file systems
    1. NTFS, exFAT, FAT32, MBR, GPT
    2. SSD, SD, USB, HDD
    3. SATA, NVMe, PCIe
  3. Support complex NTFS objects - hardlinks, junctions, shortcuts, symbolic links
  4. Work with most multicore modern x86 CPUs
  5. Provide detailed granular per file level logging
  6. Provide a clear explanation of any failures or errors, suggesting resolutions to solve problems
  7. Persisted user settings for paths, options, window positions, window sizes
  8. Multiple ways to use CrazyCopy varying in desktop space, Full GUI, Mini GUI, Command Line or Folder Context Menus
  9. Provide extensive and detailed Help and Support 
  10. A simple, streamlined, intuitive GUI, with sensible defaults, carefully chosen options and limited dialogs (configurable)
  11. Fail early (before operations start) with clear validation rules, reducing the risk of partially moved or copied folders 
  12. Support automation and AI integration - predictable, well defined, minimalist command line API
  13. Script friendly - Correct command line stdout and stderr seperation, success or failure return exit codes    

Agentic

CrazyCopy can also be driven by AI and used agentically. It has a deterministic command-line interface, making it a suitable tool/action for integration into an AI agent's workflow. Both Move and Copy can be used, and a clear and deterministic result can be fed back into the agent. The return code can be used to determine if the operation was a success or not, with 0 being success and non-zero representing an error. Also the final status of every operation is logged in the system log file as one of the following states 

SUCCESS = The operation was a success with no errors
ERROR/FAILED
= The operation did not succeed due to an error

Running CrazyCopy 

CrazyCopy can be run in four distinct ways. These different methods offer varying degrees of visible Graphical User Interface (windows, dialogs, controls etc.). This allows the user to work minimally using little or no screen real estate, or work with a full Window-based application.

CrazyCopy also supports full granular logging which includes the details of every File and Folder moved or copied during an operation. This provides a full and accurate audit record for every file operation. 

CrazyCopy is designed to be safe, with safe in this context meaning to avoid losing any files or folders, or losing any data from files.

One of the design principles is to never modify any of the files inside the folder being copied (the Source Folder). When a folder is copied or moved however, new reparse points or new shortcuts may be created in the new Destination Folder. These special NTFS and Windows objects reference other files or folders in the system. These paths may need to be changed in the new Destination Folder in order to keep the intended target linked correctly after a Copy or Move.  This occurs when a target file or folder is also being copied or moved along with the shortcut or link, or when a link has a relative path to define its target that may no longer work. 

Cloud Placeholder files are unsupported. This is because they can become hydrated when the files are read, thus changing the state of the file, which would then change the Source Folders contents. Placeholder files can be in various states including: empty, partially downloaded or fully downloaded. Performing a Copy or Move on such files could result in a large number of dormant placeholder files being fully downloaded from the cloud in order for them to be copied or moved. This would result in the Source Folder's contents changing simply from reading or accessing its placeholder files. Again this would conflict with a fundamental CrazyCopy design principle of keeping the Source Folder unchanged from all of CrazyCopy's operations. 

Additional Sources of Support

There are seven layers of support for CrazyCopy. See the hyperlinks at the end of this document for some of the following 

This CrazyCopy Complete User Manual

This User Manual is a detailed explanation of CrazyCopy designed to get you, the user, to become an expert on the entire system. Don't be fooled by CrazyCopy's apparent simplicity! The features of Copying and Moving Folders might sound simple but these feature are built upon a very complex and precise set of rules. For the complete exhaustive guide to all CrazyCopy features and behaviour, including deep dives on many Windows features, this extensive manual was created. Once you become familiar with all the easier features from the Quick Start Guide move on to this Complete User Manual to get to know the inner workings of CrazyCopy.

Nomenclature

To make the explanations in this guide easier to understand the following phrases are used throughout. One of the most important distinctions in CrazyCopy is the difference between the Destination Folder (which is where the entire Source Folder will be Copied or Moved to), and Final Destination Folder (which is the path of the new folder once it has been copied or moved into the Destination Folder). The following phrases are used to explain the rules of what's permitted and what's restricted in CrazyCopy.

Term Definition Example Path
Source Path or Folder  The complete, absolute path of the folder specified in the Source Text Box or on the command line. This is the complete path to the folder that will be copied or moved. D:\Source\level2
Source Folder Name The actual name of the folder being copied or moved, this will be the folder name created in the destination folder. This name comes after the last backslash in the Source Text Box

D:\Source\level2 

 

In the above path level2 is the Source Folder Name. 

Source Folder Tree

Everything contained within the Source Folder, including all files, special files and all subfolders with their contents (continues recursively).


All contents (including all subfolder contents) in D:\Source\level2

Destination Path or Folder  The parent folder that will contain the Source Folder, after the Source Folder has is copied or moved. 

If the Destination Folder is E:\Dest\Level1

 

then copying or moving the Source Folder D:\Source will create or overwrite

 

E:\Dest\Level1\Source

Final Destination

Folder or Path

The folder that will hold the contents of the Source Folder after the Copy or Move.

 

The Final Destination Path is created by appending the Source Folder Name to the end of the Destination Path.

If the Source Folder is

D:\Source

 

Then the Source Folder Name is

Source

 

And the Destination Folder is E:\Dest\Level1

 

Then the Final Destination Path is 

E:\Dest\Level1\Source

Root Folder The top folder of a volume, partition or drive is called the root folder. It is described by a drive/partition/volume single letter followed by a colon, and then finally, a backslash. 

Example D:\

 

The above root folder can also be represented by d:\

Current Folder In Windows the current folder of a drive is specified by the volume letter and a colon (without any backslashes). In CrazyCopy there is no concept of a Current Folder as it would cause too much confusion. If a volume letter and a colon are used anywhere (in text boxes, command lines etc.) CrazyCopy will convert this string to a root folder of the specified volume instead of the volume's current folder.

D: = the current folder on Volume D: 

d: = Equivalent of the above D:

 

Both of the above would instantly become D:\ which is the root folder of volume D

Graphical User Interface

 

also known as 

 

GUI

The GUI version of CrazyCopy is the graphical user interface version of CrazyCopy. The user interacts with it via Graphical Windows using a Graphical Interface. 

CrazyCopy.exe is run from the Windows Start Menu. It is not on the User's or System PATH, and therefore can not be run from a command line

Command Line Interface

also known as CLI

CrazyCopyCLI.exe is the command line version of CrazyCopy, and it has no Graphical User Interface. All inputs to a session are passed in from the command line at startup. A single Copy or Move operation runs each time CrazyCopyCLI.exe is executed, with a result returned. The Folder Context Menu options use this CLI version of CrazyCopy. It should also be used when scripting or for AI interactions. 

Can run CrazyCopyCLI.exe from any folder because its location is added to the User's Windows PATH.

Filesystems, Volumes, Disks and Partitions

The following definitions may help with the descriptions in this document. 

CrazyCopy supports NTFS, exFAT and FAT32 file systems, however some of this document applies only to NTFS features. Most of the complex functionality described below that CrazyCopy transparently handles, including reparse points, symbolic links, junctions, hardlinks, permissions, ACLs etc. only apply to NTFS Windows filesystems.

If using simpler filesystems like exFAT and FAT32 there are far less considerations, this means CrazyCopy becomes even simpler to use. Either way, CrazyCopy makes folder transfers much easier, safer and more convenient.

USB stick storage does not seem to benefit much from additional thread usage when Copy or Moving files. Windows seems to use memory caching of USB stick content for example, meaning reading their contents to copy to other non USB disks can take almost no time. Writing contents to USB disks on the other hand with more than 2 threads can lead to IO contention and slower speeds. Therefore USB based storage is capped at 2 threads. Note this does not affect USB enclosures that report as NVMe disks (not USB). These continue to have their threads configurable just like any other internal NVMe disk. 

Supported Storage Disk Types

All Windows supported disk types are supported by CrazyCopy including (but not limited to)

Basically, if Windows can see and use the drive then CrazyCopy should be able to operate with it. 

Supported OS Versions

CrazyCopy currently supports Microsoft Windows 10 and 11 only. Both Pro and Home variants are supported.

How does CrazyCopy handle WSL folders ?

Windows Subsystem for Linux (WSL) allows Linux environments to run within Windows. NTFS file systems in modern Windows versions can support some linux features. A major difference between Windows and Linus is the support for case sensitive file and folder names. Linux supports filenames with case whereas Windows, by default, ignores case differences when comparing file or folder names. For example, Linux considers FILE.txt and file.txt to be two different files, while Windows normally considers them to refer to the same file.

If wsl is enabled in Windows then it is possible to enable per-directory case sensitivity on an NTFS file systems, thus allowing linux like file and folder naming. File and Folder names that differ only by letter case can coexist within the same folder.

For example a folder with per-directory Case Sensitivity Enabled, could legally contain the following files and folders:

D:\Source\
    SubFolder\
        FILE.txt
        file.txt
    subfolder\
        FILE.txt
        file.txt
    SUBFOLDER\
        FILE.txt
        file.txt

With per-directory case sensitivity enabled on D:\Source and each of its three subfolders, all three subfolders and all six files are distinct objects. A Default installation of Windows on the other hand would only see these unique files and folders if case sensitivity was disabled (or not supported)

D:\Source\SubFolder
D:\Source\SubFolder\file.txt

Therefore copying a Source folder that contains case sensitive folders will fail if Windows, the NTFS Disk and the Destination Folder do not all support per-directory Case Sensitivity. It must be configured in the OS, on the disk, and on the folder.

To reduce the risk of overwriting files or losing data, Copy Over is not permitted if the Source Folder itself, or any of its subfolders has per-directory case sensitivity enabled. CrazyCopy checks for this condition before copying begins, and it will reject a Copy operation if Copy Over is enabled.

When Copy Over is disabled, CrazyCopy may still encounter filename collisions if the destination cannot distinguish between filenames that differ only by letter case. In this situation, the operation will fail rather than deliberately merge the conflicting files.

CrazyCopy displays an error message explaining the problem.

Example: Moving NTFS USB Drives Between Windows Machines

Consider a USB flash drive formatted with NTFS and connected to a Windows computer that supports per-directory case sensitivity. Several folders are created, case sensitivity is enabled on them all, and there are files added with names differing only by case.

The USB drive is then removed and connected to another Windows computer where the required per-directory case-sensitivity functionality is unavailable or cannot be used by CrazyCopy.

Although the drive is still formatted with NTFS, the destination may be unable to preserve the distinct filenames contained in a Source Folder on the device. Attempting to copy or move these folders may therefore fail because the Destination Folder on the PC cannot represent all the Source Files and Folders without filename collisions.

CrazyCopy does not intentionally overwrite one case-distinct source file with another to resolve these conflicts.

Therefore Copy Over remains prohibited, whenever the Source Folder or any of its subfolders has NTFS per-directory case sensitivity enabled.

Supported File Types and Folders

CrazyCopy's Copy and Move operations supports all Windows and NTFS special file types, except Cloud Placeholder files. Supported types include

  1. Normal files e.g. Text, Images, Binary
  2. Hardlinks - created with mklink /H - These are Copied or Moved the same way as individual files
  3. Junctions - created with mklink /J - A new junction file will be created in the Destination Tree during a Copy or Safe Move operation. The junction target will not be recursively copied (i.e. deep copied). Only a new special junction file is created. When opening the new Destination junction file in Windows File Explorer, the same folder contents that are in the Source Tree's junction folder will be shown.
  4. File or Directory Symbolic Links - made with mklink or mklink /D will still point to their original targets if the target file or folder is outside the Source Folder Tree ie the Folder being copied or moved. If the target file or folder is also being copied or moved (because it's in the same Source Tree as the link), then the new copied link will have its target set to the newly copied or moved target file or folder, instead of the original target (which may now be gone or moved).
  5. Shortcuts (.lnk) - After copying or moving shortcuts, they will still point to their original target if the target file is outside the Source Folder Tree. If the target file is also being copied or moved (because it's in the same Source tree as the shortcut being copied or moved), then the shortcut's target will be set to the newly copied or moved shortcut target, instead of the original target (which may now be gone).

Unsupported File Types

  1. CrazyCopy rejects safely (before starting an operation), any Copy or Move where the Source Folders contain Cloud Placeholders. Use the normal Windows File System for managing any folders that contain Cloud Placeholders. Note that CrazyCopy does allow Copying and Moving to a Cloud Folder.
  2. NTFS file systems in a Windows System that supports case sensitive naming can have files and folders in the same folder where the file and folder names differ only by case. To reduce the risk of overwriting or incorrect merging such files and folders, Copy Over is not permitted when copying a Source Folder that has case senstive naming enabled, or any of its subfolders have it enabled.

See the end of this Guide for a link to more information in the Unsupported Operations guide.

Cloud Files and Folders

As stated above, a Source Folder can not contain any Cloud Placeholder files, as these are not actually normal files, they are special files that Windows manages. Use Windows Copy and Move to organize your Cloud Placeholders. CrazyCopy does support Cloud Folders though. You can set a Cloud Folder as a Destination or a Source Folder and Crazy Copy will copy or Move files to or from it, as long as the files inside the Source are not Cloud Placeholders.

Junctions, Directory Symbolic Links and Folder Shortcuts as the Source Folder 

Junctions, directory symbolic links, and shortcut to folders can all be valid Source Folders and therefore copied or moved. When Copied or Safe Moved they become a normal folder. Their contents are deep copied meaning the Final Destination Folder will contain the entire contents of the object types target folder. 

OS Move (Non Safe-Move) Junction, Directory Symbolic Link, Folder Shortcut

If performing an OS Move (without using Safe Move) of a Junction, Directory Symbolic Link or Folder Shortcut the OS Move will really move the actual Junction, Directory Symbolic Link or Folder Shortcut. A deep copy of the target folders contents is not performed.

Installation

There are two methods for purchasing and installing CrazyCopy, the first is from the Microsoft Store, and the second is directly from Void Pointer's website (or a third-party supplier). 

Microsoft Store Version

Microsoft Store installations (.msix) behave differently from .msi installers. The aim of Store packages is to simplify the installation and maintenance for the user.

  1. Firstly the installation is automatically performed after purchase.
  2. Secondly the location of the install is chosen automatically, the user cannot override where the installation is located.
  3. Thirdly, upgrades may be downloaded and installed in the background without any user intervention. This changes the version of the application and may also change the location of the installation, which can break manually created shortcuts to the Application file.
  4. Lastly the user.config file which contains all the user's persistent settings like the Source Folder path, Destination Folder path, button states etc. is also stored in a more difficult-to-find folder location.

The above behavior means therefore that store applications don't normally have a Desktop Shortcut as they are normally executed directly from the Start Menu (or sometimes can also be executed from the command line).

Void-Pointer Website Purchase or Other 3rd Party Stores

If purchased outside of the Microsoft Store, double-click the downloaded .msi file to install CrazyCopy. Then follow the on-screen instructions. Use the same .msi file to repair the installation if CrazyCopy ever fails to start in the future, or if it complains of missing files. This type of installation can also create a desktop shortcut.

The installation also ensures CrazyCopyCLI.exe can be accessed from any folder location on the command line (its location is added to the User's PATH). This means users can type and run the CLI executable from any folder in a Windows Terminal, Command Prompt or Powershell. The current working folder does not need to be set to the installation folder.

Repair, Reset or Uninstall

If the installation is not working properly i.e. missing files, system crashes, wont start up etc. try to re-install the application first by running through the installation process again. Performing a re-installation will refresh the installation files, ensure the correct folder layout and apply the correct file permissions for the current Windows user.

See the Troubleshooting help page for more advice, the link is at the end of this document.

To Repair, Reset or Uninstall CrazyCopy go to the Windows Apps and Features screen (aka Add Remove Programs). Find the CrazyCopy installation under the Apps & features list then click on it, and then click on Advanced to open the CrazyCopy Installation Options screen. Note that the user can also Uninstall CrazyCopy from here.

image.png

From the Application Screen use the relevant button for the desired operation. If any dialogs or log messages complain of missing help files when running CrazyCopy then try to Repair the installation first (hit Repair under the Reset Section).

If CrazyCopy fails to start up or it's not possible to change any of the settings in any of the Windows then try to Reset the installation (hit Reset in the Reset Section). This will remove all current settings saved in the user.config file. 

To remove CrazyCopy from your computer (including the user.config file holding the settings) click on the Uninstall button in the Uninstall Section. Uninstalling does not remove the log files, these are retained for record keeping. 

image.png

Starting CrazyCopy

Launch from the Start Menu if purchased through the Microsoft Store. If purchased outside the store then the installation may also have created a desktop shortcut, use that to avoid having to navigate the Start Menu. If the user creates a desktop shortcut to the Store Version, then be aware that upgrading CrazyCopy (which may be performed automatically, depending on Window's settings), may cause the location of the executable files to move, meaning that the desktop shortcut will not work after the upgrade. The same applies to any other shortcuts, like the Windows Taskbar. 

To run directly from the command line, see the relevant section below.

How does CrazyCopy Work? 

CrazyCopy supports Moving and Copying Folders. Therefore it helps when using Crazy Copy to think in terms of Folders not files.

Copy or Move operations take a Source Folder and Copy or Move it, in its entirety, to a Destination Folder.

Example:

Source Folder: e:\MySourceFolder
Destination Folder: d:\Backups

If the above folders were chosen then a Copy or a Move would result in the following new Folder:

New Final Destination Folder: d:\Backups\MySourceFolder

The Source Folder itself (named above as MySourceFolder), is recreated inside the Destination Folder. All its files and subfolders are also copied or moved inside this new Final Destination Folder named MySourceFolder.

Specifying a Valid Path

NOTE: When using the GUI version of CrazyCopy, folder paths containing spaces must not be enclosed with quotes.  However, any paths with spaces specified on the Command Line must be enclosed with quotes.

CrazyCopy uses multiple software threads to split a Copy or Move operation into multiple parallel tasks. Each of these tasks focuses on copying or moving a subset of the contents from the Source Folder. Set the number of threads that CrazyCopy can use with the Threads to Use slidebar. Using multiple threads speeds up a Copy or Move operation, the speed increase depends on many factors including the number of threads used. A maximum of 10 threads is more than enough for most operations. The maximum threads will depend on your CPU type. CrazyCopy does not cap the maximum numberthat can be selected, they are all available, as who knows what types of new storage may appear in the future!

Use the Windows convention of a single backslash for all path folder seperators. Forward slashes / or double backslashes \\ are not supported.

Performing A Copy

Until confident with all of CrazyCopy's features, it's recommended to keep the Copy Over checkbox (3) unticked. This will prevent any accidental overwriting or merging of any existing folders. Overwriting and merging of folders occur when a Final Destination Folder already exists and the user copies over it using a folder of the same name. See below for more details.

image.png

  1. Select the Source Folder you want to Copy. This can be achieved three different ways. Click on the three dots at the end of the Source Text Box, or type the path location in the Source Text Box, or drag and drop the folder onto the Source Text Box from a Windows File Explorer.
  2. Set the Destination path to the Parent Folder that the newly copied folder will reside in. In other words choose where you want to Copy the Source Folder to. Again, click on the three dots, this time at the end of the Destination Text Box, or type the path location in the Destination Text Box, or drag and drop the folder onto the Destination Text Box from a Windows File Explorer.
  3. Tick the Copy Over checkbox if you want to Copy Over an existing Final Destination Folder. Always keep this checkbox unticked if you never wish to overwrite any folders.
  4. Using the Threads To Use slider, set the maximum number of threads CrazyCopy can use during a Copy operation. Use a low number if the PC is already super busy with a high load and you want a Copy to be performed as more of a background task. Slide it towards the max to use more logical processors (or hardware threads), and to to see real Crazy Fast Copying. The optimal thread count depends on multiple factors - see below for a more detailed explanation. 
  5. Click the Copy button and watch the Progress of the Copy on the Progress Bar
  6. As the Copy operation progresses, the Progress Bar will rise. The percentage starts at 0 and when the Copy operation is complete will be at 100%. Each percentage on the Progress Bar represents 1 percentage of the Source Files copied. 
  7. Check the results to make sure the Copy operation was successful. If anything failed during the copy then the Progress Bar will change to Red, and a message explaining the failure will be logged in the Mini Log Viewer. An additional dialog box may also appear if you have the Dialogs checkbox enabled.
  8. If the operation completes to 100% without errors then the progress bar remains Green. CrazyCopy has already verified the contents in the Final Destination Folder contain all the expected Source Folder's contents, thus the operation was successful.
Specifying Paths 

As mentioned above, paths should never be enclosed with quotes in the GUI even if they contain spaces. Relative paths are not supported at all in CrazyCopy. Path seperators must always be a single backslash \ (Windows convention). Forward slashes / or double backslashes \\ are all not supported. Only normally accepted characters can be used to specify a path. See Unsupported Operations (link at the end of this document) for more information on valid paths and supported content types.

If you wish to Copy Over an existing folder then enable the Copy Over option. Copy Over allows an existing Final Destination Folder to either be completely overwritten (if the Source Folder has an identical file structure), or for the Source Folder and Final Destination Folder to be merged (if both folder's file structures are different). During a Merge all matching files are overwritten, while new Source files are added to the Final Destination Folder, and unique Destination files remain in place.

A junction, directory symbolic link and shortcut to a folder can all be valid Source Folders that can be copied. When copied they become normal folders in the Destination Folder (the Source remains untouched). The Source's target folder's contents (e.g. the folder the shortcut references) are deep copied into the new Final Destination Folder. This means the Final Destination Folder contains real copies of all the shortcuts target folder contents. It is a deep copy.

Performing A Move

A Move operation cannot overwrite any existing Folders. This means a Move operation will be rejected if the Final Destination Folder already exists. The Source and Destination Folders on the other hand must exist.

For example moving the Source Folder:

D:\Source

To the Destination Folder:

E:\Destination

Would result in a new Final Destination Folder

E:\Destination\Source 

Which would be the new Final Destination Folder, and this can not already exist for a Move operation.

If the Final Destination Folder did already exist, then a Move would result in a merge of the Source Folder's contents and the existing Final Destination Folder's contents. This therefore would not be strictly speaking a Folder Move operation at all.

There are two methods that CrazyCopy supports when moving a folder. Users should start with just using CrazyCopy's Safe Move until more familiar with how a Move works. The second way to Move a Folder is by using the normal Windows Move Operation which CrazyCopy also supports. This method only allows a folder to be moved to the same Volume. Uncheck the Safe Move option on the main GUI Window if you wish to use this type of Move. It can be much faster then the Safe Move but again does not support moving a folder across volumes (different drive letters).

To use CrazyCopy's Fast Safe Move, click the Safe Move checkbox so a tick appears in the box. The Safe Move performs the following steps

  1. A Fast Copy of the Source Folder to the Destination Folder (it does not move the contents it copies them)
  2. A structural verification of the new Final Destination Folder's contents (audit counts all files, special objects and folders)
  3. If successful verification then remove the original Source Folder, completing the Move

If there are any errors during the Move, or if the user cancels the operation, the original Source Folder will always be left completely untouched. No files or folders will be removed from any folders until the Destination Folder has been verified to contain the same number of files and folders as the Source Folder.

image.png

  1. Select the Source Folder (1) you want to move. Click on the three dots to select the folder, or type in the location, or drag and drop the folder onto the Source Text Box.
  2. Set the Destination (2) to the parent folder of where you want to Move the Source Folder to. Click on the three dots to select the folder, or type in the location, or drag and drop the folder onto the Destination Text Box.
  3. Remember that CrazyCopy does not support moving a folder over an existing Final Destination Folder 
  4. Keep the Safe Move (3) option ticked, as the Safe Move supports moving a folder between different volumes. It also provides full validation before removing the original Source Folder. 
  5. Set the number of threads on the Threads to Use slider (4) . Leave it in the middle (default) or maximize it for the fastest Folder moving times!
  6. Click Move (5) and watch the Progress Bar (6).
  7. Cancel at any time with the Cancel button. Because no files or folders are really moving with a Safe Move (they are only being copied), cancelling will mean that the Source Folder remains untouched.
  8. Only when all the Files and Folders are verified in the Destination Folder will the Source Folder be removed, completing the Move operation. It is not possible to Cancel a Move while CrazyCopy is removing a Source Folder as this would leave a partially empty Source Folder on the system.
  9. Check the results to make sure everything passed (6). If any failures occurred during the Move then the Progress Bar will be Red, and a message telling the user what went wrong will be posted in the Mini Log Viewer (and System Log). A Dialog will also appear with a reason for the failure if you have the Dialogs option enabled.
Specifying Paths 

As mentioned above, paths should never be enclosed with quotes in the GUI even if they contain spaces. Relative paths are not supported at all in CrazyCopy. Path seperators must always be a single backslash \ (Windows convention). Forward slashes / or double backslashes \\ are all not supported. Only normally accepted characters can be used to specify a path. See Unsupported Operations (link at the end of this document) for more information on valid paths and supported content types.

Junctions, Directory Symbolic Links and Folder Shortcuts as the Source Folder 

A junction, directory symbolic link and shortcut to a folder can all be valid Source Folders and therefore copied or moved. A Copy or Safe Move will create a new normal folder type in the Destination Folder (for Copy the Source Type remains untouched). The Source's target folder's contents (e.g. the folder the shortcut, link or junction references) are then deep copied into the new Final Destination Folder. This means the Final Destination Folder contains real copies of the entire contents of the target folder of the object type. It is a deep copy. 

For Example

Source Folder Type : Junction
Source Folder : C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target
Junction's Referenced/Target Folder : C:\Users\marcu\Desktop\junction_target_folder
Command that the Junction was Created with : mklink /j junction_to_junctions_target ..\junction_target_folder
Destination Folder
: Q:\junction_test
Final Destination Folder : Q:\junction_test\junction_to_junctions_target

And so after a Copy or Safe Move the Final Destination Folder will be a normal folder containing a copy of everything that was in the Junction's Target Folder.

image.png

Source Folder Tree for Junction : junction_to_junctions_target

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target
C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_1
C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_2
C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_3

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_1
1_File_in_junction_folder1.txt
2_File_in_junction_folder1.txt
3_File_in_junction_folder1.txt
4_File_in_junction_folder1.txt

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_2
1_File_in_junction_folder2.txt
2_File_in_junction_folder2.txt
3_File_in_junction_folder2.txt

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target\Junction_target_folder_3
1_File_in_junction_folder3.txt
2_File_in_junction_folder3.txt

We can see the junction below, whose target is a folder. The target folder has 3 subfolders, all of which contain 4,3 and 2 text files respectively.

image.png

After Copying or Safe Moving the following junction Source Folder 

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target

The junction junction_to_junctions_target becomes a normal folder as the Destination Final Folder. So junction_to_junctions_target is now a subfolder of the Destination Folder. 

Q:\junction_test

Q:\junction_test\junction_to_junctions_target

Q:\junction_test\junction_to_junctions_target\Junction_target_folder_1
1_File_in_junction_folder1.txt
2_File_in_junction_folder1.txt
3_File_in_junction_folder1.txt
4_File_in_junction_folder1.txt

Q:\junction_test\junction_to_junctions_target\Junction_target_folder_2
1_File_in_junction_folder2.txt
2_File_in_junction_folder2.txt
3_File_in_junction_folder2.txt

Q:\junction_test\junction_to_junctions_target\Junction_target_folder_3
1_File_in_junction_folder3.txt
2_File_in_junction_folder3.txt

 image.png

The same will happen for Folders Shortcuts, and Directory Symbolic Links. 

When performing a Safe Move however the original Source Folder is actually the Junction file, or symbolic link or shortcut, and it is this that is removed to complete the Safe move operation, the contents inside the target folder are not deleted. So in the above situation, after a Safe Move the following files remain intact :

C:\Users\marcu\Desktop\junction_target_folder
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_1
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_1/1_File_in_junction_folder1.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_1/2_File_in_junction_folder1.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_1/3_File_in_junction_folder1.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_1/4_File_in_junction_folder1.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_2
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_2/1_File_in_junction_folder2.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_2/2_File_in_junction_folder2.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_2/3_File_in_junction_folder2.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_3
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_3/1_File_in_junction_folder3.txt
C:\Users\marcu\Desktop\junction_target_folder\Junction_target_folder_3/2_File_in_junction_folder3.txt

Whilst this junction file is removed as the original Source Folder:

C:\Users\marcu\Desktop\junctions_inside\junction_to_junctions_target

OS Move (Non Safe-Move) of a Junction, Directory Symbolic Link or Folder Shortcut

Performing an OS Move (with Safe Move off), on a Junction, Directory Symbolic Link or Folder Shortcut causes the actual Junction, Directory Symbolic Link or Folder Shortcut to really move and remain the same object type. It does not become a folder and therefore a deep copy is not performed. The moved object will still target the original folder that is targetted before the OS Move.

Persistent Settings

There are two CrazyCopy versions, the GUI version and the Command Line version (which is also used by the CrazyCopy Folder Context Menus in Windows File Explorer). The GUI version has some additional Windows settings that are also saved between sessions. Both versions have their own user.config which stores all the user settings.

User Settings

When an option is set via the GUI (Graphical Window) it will not apply when using the Command Line. So for example the Threads To Use setting in the GUI is only used by the GUI version of CrazyCopy, it is not used when running an operation from the Command Line or when using CrazyCopy from the Folder Context Menus in Windows File Explorer. If the user wants to change the Number of Threads used when CrazyCopy is running from the Command Line, they must provide the new Number of Threads using a command line option (see the Command Line section for more details).

User Settings

  1. Source Folder - Path specified as text
  2. Destination Folder - Path specified as text
  3. Copy Over - On or Off
  4. Safe Move - On or Off
  5. Dialogs - On or Off
  6. Threads to Use - Number from 2 to the Number of Logical Processors or Hardware Threads the system has

GUI Application's Windows Settings

  1. Location and Size of the Main Window
  2. Location and Size of the Mini GUI Window
  3. Location and Size of the Log View Window

GUI Application Options

Another design principle of CrazyCopy was to keep the system simple by choosing sensible defaults, predictable and intuive behaviour, and the lowest number of options the user needs to operate. This means the user doesn't need to understand hundreds of arguments in order to achieve what all users want to do 99% of the time. Rare edge cases are not designed into CrazyCopy. Some applications are well suited to having more granular control over every operation, but the purpose of CrazyCopy is to Copy and Move folders as quickly, simply and safely as possible. Therefore CrazyCopy's options have deliberately been kept to only those that are strictly necessary. 

Threads to Use

image.png

Move the slider between the minimum Threads To Use, which is 2 for all systems, and the maximum, which is system-dependent. Generally, for the fastest copies, use up to 10 threads. Using the maximum worker-thread count may leave less CPU and I/O capacity available for Windows and other running programs and services, which may result in Windows not being refreshed/redrawn correctly, and some system responses becoming sluggish or less responsive. This slowdown is only while CrazyCopy is performing an operation with a high number of threads. My opinion is that most of the time I want CrazyCopy to perform and finish as quickly as possible, therefore I want it to a high number to do that. I often find I need a Copy or Move to complete before I can carry on with other tasks. So my Threads is set to 10. However your use case will be different, and you may prefer slower, background type file operations. Experiment with the threads count option to see what works best for you and for your storage types.

The Threads To Use option is used for all Move and Copy operations. This includes operations started from the Main Window and the Mini GUI (see below).

Threads To Use is saved between CrazyCopy sessions. 

On CrazyCopy startup the Mini Log Viewer will show the current value of the Threads To Use. 

image.png

Each time the Threads To Use slider is changed the Mini Log Viewer will show the new value and the previous value it was changed from (see below).

image.png

The values for the Threads To Use are also shown in the System Log (open from the VIEW LOG button)

image.png

Copy Over

image.png

Click on the Copy Over checkbox to enable this feature for all Copy operations. This will cause the Copy operation to copy the Source Folder over an existing Final Destination Folder in the Destination Folder if one already exists. Disable (untick) this box if you wish to prevent CrazyCopy from overwriting any existing files or folders. The Move operation does not use this option at all.

Copy Over Mode

Don't Copy Over any folder if you need to keep any of the files, without backing them up first !

It is possible to protect the filesystem from overwriting any existing files or folders accidentally, by setting the Copy Over mode to off. If the Copy Over tickbox is NOT ticked (disabled) then the Copy operation will not start if the resulting Final Destination Folder already exists.

If Copy Over is enabled, an existing Final Destination file will be overwritten if a Source file maps to the same Destination path and has the same filename, using CrazyCopy's case-insensitive path and filename comparison.

By default, Windows treats folders as the same folder if the name is the same and the parent folder is the same irrespective of any letter case used in the name. Windows is case insensitive. For example these folder names are considered the same d:\MYCASE and D:\mycase. The exception is when some non default NTFS folders are configured to support case sensitvity, ie when using wsl (linux for windows). 

By default, Windows also treats files as the same file if the name is the same and they are in the same folder irrespective of the filename and foldername letter case, so again filenames are case insensitive. For example these filenames are considered the same d:\MYCASE\MYFILE.txt and D:\mycase\myfile.txt. The exception is for NTFS folders that have been explicitly configured for case sensitivty.

If the main reason to use CrazyCopy is to backup or copy folders and you never want to copy over existing folders, then leave the Copy Over tickbox unticked to reduce the chances of accidentally overwriting existing files and folders. 

Copy Over is only supported for Copy operations, Copy Over has no effect on Move operations.

Example: Copy Over Disabled

Source : D:\OrigBackups\2026\July\SourceFolder

Destination : E:\Backups\2026

Final Destination Folder : E:\Backups\2026\sourcefolder

If the above Final Destination Folder E:\Backups\2026\sourcefolder already exists and Copy Over is Disabled then the Copy will not proceed.  If the Final Destination Folder E:\Backups\2026\sourcefolder already exists and a Move operation is attempted it will also fail, as the folder already exists and move does not support moving over an existing folder ever.

Example: Copy Over Enabled

Source : D:\OrigBackups\2026\July\SourceFolder

Destination : E:\Backups\2026

Final Destination Folder : E:\Backups\2026\SourceFolder

If Copy Over is enabled, then the contents of the existing folder D:\OrigBackups\2026\July\SourceFolder would be copied into the existing E:\Backups\2026\SourceFolder, overwriting any existing files that have the same filename (case is ignored). A Move can never cause a folder merge or overwrite any existing files. A Move will always be prohibited if the Final Destination Folder exists.

Merging Folders

Existing Destination Folders are never overwritten, only their contents can be changed. If the Final Destination Folder already exists and a Copy is performed (and Copy Over is ticked), the Source Folder contents will be copied over the existing Destination Folder, effectively merging contents. If Copy Over is Disabled then the Copy operation is not permitted and no merge will occur.

As stated above, a Move will always be prohibited if the Final Destination Folder already exists. 

For a Merge, any existing files in the Destination Folder with the same name and parent Folder as a Source File will be overwritten by the Source File. These are duplicate filenames. If Files exist in the Destination Folder that do not have an equivalent File in the Source Folder, then these will remain untouched as no Destination Files are removed during a copy.

The number of Files and Folders in the Destination Folder after the Copy has finished is affected by the number of unique and duplicate files that were already in the Destination Folder before the Copy started. So a direct comparison of File Numbers from the Destination Folder's properties may not match the number of Files Copied, or the Number of Files in the Source Folder.

File and Folder Equivalence (Naming and Case Sensitivity)

When naming new files or folders, CrazyCopy preserves the case of the characters used. However, CrazyCopy ignores case when comparing file and folder names (as Windows does), effectively treating names that differ only by case as the same. This matches the normal case-insensitive behaviour of Windows filesystems such as NTFS. This behaviour can be overridden at the NTFS folder level, for some edge cases like when using Linux on Windows (wsl). 

NTFS Volume with Case Sensitive Folders

In the rare occurrence of CrazyCopy being used to Copy or Move folders with case sensitivity enabled (NTFS linux folders from wsl), and if multiple entries have the same names in the same folder differing only by case, then CrazyCopy behaves in a safe and predictable way, it will prohibit Copying over these folders. Most users do not use CrazyCopy to copy linux folders (from wsl), even if they can be accessed from Windows. But if case sensitive folders are enabled on an NTFS volume then CrazyCopy will not copy any folders if the destination folder is ambiguous. So if there are effectively two or more Destination Folders that exist with the same name but different case, or two or more Final Destination Folders that exist with the same names but different case, CrazyCopy will not copy into those folders.

For example, the following two folder names would be considered the same folder : 

mynewFOLDER 

AND

MyNewFolder

Example of not Moving or Copying if the Final Destination Folder is case ambiguous:

Source Folder : C:\Level1\MyDest
Destination Folder : C:\Level2\
Final Destination Folder : C:\Level2\MyDest

So if the Destination Folder already contains both:

C:\Level2\MyDest
C:\Level2\MYDEST

Then CrazyCopy considers both names equivalent and will refuse to Copy the Source Folder because it cannot unambiguously determine which folder should be used.

Example: Windows Default Folder Naming and Case Behaviour 

E:\MyFolder>mkdir MyNewFolder

E:\MyFolder>dir
 Volume in drive E is SMData_0E
 Volume Serial Number is 0EBD-13F1

 Directory of E:\MyFolder

2026-08-10  03:51 PM    <DIR>          .
2026-08-10  03:51 PM    <DIR>          ..
2026-08-10  03:51 PM    <DIR>          MyNewFolder
               0 File(s)              0 bytes
               3 Dir(s)  1,029,106,278,400 bytes free

E:\MyFolder>mkdir mynewFOLDER
A subdirectory or file mynewFOLDER already exists.

The effects of this rule on CrazyCopy mean that copying a Source Folder will be considered overwriting if the same folder name already exists in the Destination Folder, even if it has different case. So, if a folder exists with the same name but different case then Move is not supported, and neither is a Copy.

Subfolders also follow the same pattern, so existing subfolders already in the Destination Folder will be considered duplicates (as Windows ignores case) if the name in the Source and Destination trees are the same and they only differ by case. Any newly created folders will use the same case they have in the Source Tree.

Copying over an existing Final Destination Folder (or any subfolder) will result in a merge of the two folder's contents. Overwriting existing files will result in the destination file's content being replaced with the new source files. Again, overwriting will occur if the name is the same and the file items are in the same folder (ignoring letter case).

Example :

Source Folder Contents:

MySOURCE

MySOURCE\Folder1\

MySOURCE\Folder1\file1.txt

MySOURCE\Folder1\FILE2.txt

mysource\Folder2\FILE3.txt

Already Existing Destination Folder Contents:

mysource

mysource\Folder1\

mysource\Folder1\file_already_in_destination.txt

mysource\Folder1\file1.txt

mysource\Folder2\file3.txt

After a Copy - The New Destination Folder Contents Become:

mysource

mysource\Folder1\

mysource\Folder1\file_already_in_destination.txt

mysource\Folder1\file1.txt

mysource\Folder1\FILE2.txt

mysource\Folder2\FILE3.txt <- Existing Destination File was replaced by the Source File

Canceling Copy Over

If you wish to stop a Copy Over operation press the Cancel pushbutton and wait for all the threads to stop. This can take a few seconds, especially if the system is fully loaded, so you may have to click a few times.

There is no Undo or Rollback if Cancel is pressed, any files Copied will still be in the Source Folder, and any files moved will either still be in the Source Folder, or all be in the Destination Folder. A Copy Over however may result in files being overwritten and this can not be reversed. Backup any folders you Copy Over first if you want to retain all files.

Dialogs

Enable the Dialogs checkbox to allow CrazyCopy to display messages and interactions through popup dialogs. If you prefer messages to be provided only through the system log and the Mini Log Viewer then uncheck the Dialogs box. By default this setting is persisted across sessions. When closing CrazyCopy the user will be asked through a popup dialog (if Dialogs are enabled), if they wish to Save CrazyCopy's Settings or not. 

image.png

So turn Dialogs off to prevent popups. If Dialogs is turned off the user can still check the status of all jobs from the Main Windows Mini Log Viewer, or from the Logger View (click VIEW LOG), and from the System Log File. Dialogs does not need to be enabled in order to see error log messages and log based feedback.

Files

This read only textbox shows how many files were copied or moved during the previous operation. The Files count includes 

image.png

Note that this number is the total number of files that were copied or moved and may include file types that are not included if looking at the Folders Explorer Properties dialog. For example, if an operation copied over an existing Final Destination Folder, then the Final Destination Folder may already have had files inside it that were overwritten, as well as some that were not. If all of those files were duplicates and overwritten then the final number of files in the Final Destination Folder will be the same as the Source Folder. However, if some of the Final Destination Folder's files were not overwritten, or some of the Source Files had unique filenames, then the number of files in this box will not be the same as the number of files in the Final Destination Folder.

To cross-reference the Files Count manually, the user can check the Source and Destination Folders using Windows Explorer Folder Properties. Note that again not all the special file types are counted by Windows, Junctions and Folder Symbolic Links are items that are processed by CrazyCopy but are not counted as Files in the Source Folder's Properties. So the CrazyCopy Files number is really only accurate when the Source Folder doesn't contain any junctions or directory links.

Luckily, CrazyCopy will tell you how many Files to Expect when checking the Windows Folder properties, see the Summary Log messages in the Mini Log Viewer and then the user can compare the number of files from this line

image.png

The 69 files above should be the same as Windows Folder Properties - see the number next to Contains: Files : NN

image.png

Explorer's Folder Properties treats the following files types as described in the table below

File Type

Counted in Explorer's Folder Properties: Files 

Counted in Explorer's Folder Properties: Folders

Normal File

Yes

 

1 file count

No
Normal Folder No Yes

Shortcut to a Folder

 

.lnk

Yes

 

1 file count = 1 shortcut

No

Shortcut to a File

 

.lnk

 

Yes

 

1 file count = 1 shortcut

No

Junction to a Directory

 

mklink /J

No No

Symbolic Link to a File

 

mklink

Yes

 

1 file count = 1 symbolic link

No

Hardlink to a file

 

mklink /H

Yes

 

1 file count = 1 hardlink

No

Directory Link

 

mklink /D

No No

Time

image.png

The Time text box shows how long an operation has been running, or how long it ran. See for yourself how fast CrazyCopy really is!

When an operation completes, the Time read only textbox shows the length of time in seconds that the operation took. The time is counted from the moment the Copy or Move button was pressed until the Copy or Move operation stopped. For a successful Copy operation, this includes the time taken to copy and verify the file and folder counts of the newly copied contents. 

If an operation is Cancelled by the user, or an error occurs, the Time will only show how long the operation ran for before it terminated. 

Progress Bar

image.png

If an operation is running then the Progress Bar shows the status and percentage completed so far of the current operation. If the operation has completed then the Progress Bar shows the result of the last operation, either success or failure. 

If the Progress Bar is red then the last operation either hit an error during the operation or was cancelled by the user. This means the contents of the Final Destination Folder can not be trusted to contain a full copy of the Source Folder. 

Each percentage point on the Progress Bar represents one percent of the total Source items processed so far. So 10% means that 10% of the total number of files in the Source Folder have been Copied or Moved so far. 

If validation prevents an operation from starting, the Progress Bar remains Green at 0%.

When the operation completes and is successful the bar will show 100% and remain Green in color. If an operation starts but later fails or is cancelled, the Progress Bar changes to Red and shows 100%. It shows 100% to indicate that the operation has stopped, as shown below.

In this situation 100% means the operation has finished. It does NOT mean that 100% of the Source Folder was successfully copied, as the Progress Bar is Red.

image.png

Once an operation completes, the percentage will always show 100%.

 image.png

If the operation failed at the start, for example, due to invalid Source or Destination folders, or invalid options, then the percentage will show 0% because the Copy or Move operation didn't even start. In this situation the Progress Bar also remains Green, as no error occurred during an operation, the operation didn't even start.

Here is an example where a Copy was attempted but the Destination already contained a folder with the same name as the Source Folder. Because Copy Over is off, the Copy operation failed to start.

image.png

As can be seen above, the Progress Bar shows 0% and is still Green, because the Copy operation did not start.

Cancelling an operation will also cause the Progress Bar to go Red. See below for a user cancelled Copy Over operation.

image.png

Results

Before a Copy operation is marked Passed or Successful there must have been no errors during the Copy or Move operation. Once an operation completes, the Final Destination Folder is analyzed to make sure the correct number of files and folders are present. These verification counts are based on 

Therefore the final number of files and folders may be far higher than the Source Folder's. This is all handled by CrazyCopy and its validation process, it takes all this information into account, so you don't need to! 

Cancelling an Operation

image.png

To stop any active operation click the Cancel button on the Main View. Cancelling an operation can take a few moments as all the active threads must safely terminate, so please be patient! If the Cancel button is not available, then no operation is in progress. Also, when a Safe Move operation is removing the Source Folder the Cancel button will not be available, as Cancelling at this stage would leave a partial Source Folder still on the system, the Final Destination Folder already contains the all the Moved contents.

For a Safe Move or Copy, either all the contents are still in the Source Folder (if the job was cancelled), or the Source contents are now in the Final Destination Folder (if the operation was successful).

The Cancel button is only available when a Copy or Move operation is running. The Copy and Move buttons are only available when there is no operation currently running. 

Cancelling an operation resets all three button states in the GUI, they will revert back to their default state (when no job is running). Thus, Copy and Move operations can be started again.

Cancel a Copy Operation

If the user Cancels a Copy operation then the Final Destination Folder should be considered incomplete or unverified, meaning that it may not contain all the contents of the Source Folder. Do not trust the Destination Folder's contents. 

The Source Folder remains untouched with the same contents if a Copy is cancelled before completion.

Cancel a Safe Move Operation

If the user Cancels a Safe Move operation then the Final Destination Folder should again be assumed to be compromised, meaning that it may not contain all the contents of the Source Folder. Do not trust the Final Destination Folder's contents. 

The Source Folder contents will not have been touched if a Safe Move was performed and cancelled. This is because the Cancel button is only available during the Copy phase of the Safe Move. Once the Copy phase of the Safe Move is complete and verified, the user can no longer Cancel the Safe Move. The system is removing the Source Folder and this stage was cancelled it would result in a partially deleted Source Folder. 

After a failed or cancelled Move operation do not delete the Source or the Destination folders until you are certain which folder contains a complete copy of all files and folders! Compare both folders contents to be sure.

Cancel a Copy Over

If you wish to stop a Copy Over operation press the Cancel pushbutton and wait for all the threads to stop. This can take a few seconds, especially if the system is fully loaded, so you may have to click a few times.

There is no Undo or Rollback if Cancel is pressed, any files Copied will still be in the Source Folder, and any files moved will either still be in the Source Folder, or all be in the Destination Folder. A Copy Over however may result in files being overwritten and this can not be reversed. Backup any folders you Copy Over first if you want to retain all files.

Cancel causes all operations to Stop - it does not roll them back. 

Be aware that Cancelling a Copy Over operation will have the following effects.

  1. The Source Folder will remain untouched with all files and folders that were in the Source Folder at the start of the operation, still in the Source Folder,
  2. The Final Destination Folder if it was empty at the start of the Copy Over operation will contain none, some, or all of the Soruce Folder Contents
  3. The Final Destination Folder if it was not empty at the start of the Copy Over operation, will contain all the files it contained at the start of the Copy Over operation, BUT their contents may have been overwritten by duplicate named Source Files.
  4. Files in the Final Destination Folder that are unique named will remain untouched
  5. Files in the Final Destination Folder that have a matching file in the Source Folder may have been overwritten
  6. Files in the Source Folder with unique names may have been copied to the Final Destination Folder 

If a Cancel is performed during a Copy Over then you need to decide which files you wish to keep, as the Source Folder will not be the same as the Final Destination Folder if the Final Destination Folder already had files inside it. 

Don't copy over a folder if you need to keep any of the files without backing it up first.

Closing CrazyCopy

To close CrazyCopy click on the Close X on the Main Window. If Dialogs is enabled you will be asked if you wish to "Save the current settings" (if the settings have changed since startup). If you don't want these types of Popup dialogs then disable the Dialogs option.

If using the Mini GUI view and the Windows Close X button is clicked, then it will switch CrazyCopy back to the Main GUI Window. Simply Close the Main Window to shutdown CrazyCopy. 

Log Viewer

As CrazyCopy executes, log messages are written to a System Log in memory. Each log message is prefixed with a timestamp showing the date and time. To see the System Log simply click on the VIEW LOG button from the Main Window (see below). 

image.png

The Log View will open and show the current System Log messages. The Log View can be left open to monitor live log messages if needed. If the Mini GUI view is opened the Log View will close to minimise the screen area CrazyCopy is using.

CrazyCopy will remember the size and location of the Log View Window when it's closed or if CrazyCopy is closed. This means the next time the Log View Window is opened it will have the same size and be positioned in the same location as the last time it was open.

image.png

The Log View has multiple options including Line Numbering, Saving, Clearing, Sorting forward or reverse by timestamp, and of course Searching. 

Default Log Messages

The system log is first created in memory when CrazyCopy starts. When created several useful log messages are automatically added. 

image.png

Firstly, the Log Creation message, "Log Begun", is added. This shows the date and time that the current CrazyCopy session began. Secondly, the current CrazyCopy Version is logged, which is useful for checking that the latest version of CrazyCopy is running. Thirdly, the complete command line that started CrazyCopy including all parameters is logged. Fourthly, the current Threads to Use number is shown. Lastly, the current memory size of the Log is also shown.

Log Size

When displaying the log in the Log View, a message is added to the end of the log showing the amount of memory the log is currently taking up. If CrazyCopy has been running for a long time and has recorded a large number of operations the log may become extremely large and this will consume a significant amount of memory. Potentially this could cause memory issues on a machine with limited memory. Clearing the log will automatically save its contents to a file in the System Log Folder, before a new log is created. This new log will reduce CrazyCopy's memory usage. The user can also at any time, Save the log manually to a preferred location, and then Clear it to reduce the system's memory usage. 

Log View Options

This section describes the options available in the Log View for working with the System Log. 

Clear

image.png

The Clear button removes the current log from memory and clears all log messages from the Log Viewer. Note that there are always messages in any new log after a Clear. The log messages after a Clear are slightly different from the messages created when CrazyCopy first starts.

image.png

A new "Log Begun" message is added with the timestamp of the new Log's creation time (not when CrazyCopy started). Also, when a new Log file is created after a Clear, the new Log will contain a message showing the complete path of where the previous log was automatically saved to before it was cleared. This is normally the user's Local Documents folder. As always, the memory size log message is added.

Save

image.png

The log can be manually saved to a file at any time. Simply click Save and then select the destination folder and filename. The log can be saved to a file with the .txt or .log filename extension. Both file types will contain plain text only.

When the Log Saving dialog is opened, the default folder will be the CrazyCopy System Log Folder described below. The System Log Folder is stored inside the user's Documents folder.

Example System Log Folder:

C:\Users\<username>\Documents\CrazyCopy\Logs

However, if at any time the user saves a log file in another folder, then the new folder location will be remembered and become the default for the Log Save Window from then on. This means the next time the Log Save dialog is opened it will default to the new location. If the new location becomes invalid then the user's Documents folder will once again be set as the default folder. 

Line Numbers

image.png

This checkbox, when ticked, will display Line Numbers for every log entry. Unticking removes the Line Numbers from the display.

If the log ordering is toggled and the user switches to Time Reverse, the Line Numbers will still be associated to the same log messages. The Line Numbers will descend from the top down. This also means that all log entries can always be referenced by their line number, independent of the order in which the log is being viewed.

Line Numbers are a GUI overlay and are never saved in any Log files. 

Time Reverse

image.png

This reverses the order of the log messages in the Log View. The user can choose to display either the most recent messages or the oldest messages at the top of the Log Viewer. The button changes between Time Reverse and Time Forward which indicates the next action that will occur if clicked (the button name does not indicate the current order viewing state).

Time Forward lists the log entries from the earliest messages at the top, to the most recent messages at the bottom. The lowest log line number will be at the top of the view. This is the default.

Time Reverse lists the log entries from the most recent messages at the top of the viewer to the earliest messages at the bottom. The highest log line number will be at the top of the view. This is not the default.

image.png

This allows the log to be searched for any text that is entered into the Search box (left of the Search button). Users can continue clicking Search to find the next entry that matches the search text. All matching text will be highlighted if the search string in the Log Text Box is found in the log. The view will be moved so that the line with the highlighted text will be clearly visible.

When searching, if the Search reaches the end of the system log then the Search will wrap around to the start of the log. Before this a popup dialog will indicate that the next Search will begin at the start of the log. If viewing the Log in Time Reverse mode then the dialog will appear once the search has reached the start of the Log, before it wraps around to the end of the log file. These end of log popup dialogs only appear if the Dialogs option is enabled.

Keyboard shortcuts for Search are also supported. For example enter search text in the Search Text box then press Enter. The Search will begin in the same way as if the Search button was clicked. If the search string is found the view will highlight the first match. Further presses of Enter will continue to Search the log for the next match, until the end of the log is reached. A full list of keyboard shortcuts is in the table below.

Ignore Case

image.png

When Ignore Case is enabled, search text will match regardless of differences in uppercase and lowercase characters. When Ignore Case is disabled the Search text and the log must match exactly, including the case.

For example, depending on the state of Ignore Case the following text will be matched to the log during a Search

Search String Log Message Text Ignore Case Enabled Ignore Case Disabled
help find me help find me Match Match
HELP FIND ME HELP FIND ME Match Match
HELP FIND me HELP FIND me Match Match
help find me HELP FIND ME Match No Match
help FIND me help find me Match No Match
help find me help FIND me Match No Match
HELP FIND ME help find me Match No Match
Help Find Me Help Fin Me No Match No Match

Ignore Case only ignores differences in letter case; the text itself must otherwise match.

Log View Keyboard Shortcuts

The following shortcuts are supported in the Log View. Some navigation shortcuts require focus to be inside the Log Text Box, click in the box first before using them (they are marked in the table below). All other shortcuts work when focus is anywhere within the Log Viewer.

Key Shortcut Action
Ctrl+F Find - Puts cursor into the Search text box
Enter Find Next
Shift+Enter  Find Previous
F3  Find Next

Shift+F3

Find Previous
Mouse Wheel Scroll Up and Down
Page Down

Move Down a Screen of Log Messages

Requires Focus in the Log Text Box

Page Up

Move Up a Screen of Log Messages

Requires Focus in the Log Text Box

Ctrl+End

Go to the last Log Message at the Bottom of the view

Requires Focus in the Log Text Box

Ctrl+Home

Go to the first Log Message at the Top of the view

Requires Focus in the Log Text Box

Log File Location

Log files automatically saved by CrazyCopy are stored in the user's Documents folder:

<Path to Users Folder>\Documents\CrazyCopy\Logs\

For Example :

C:\Users\dave\Documents\CrazyCopy\Logs

The user can also manually save the system log at any time using any valid filename and inside any accessible folder using the Save button.

Mini GUI

The Mini GUI is the smallest and simplest way to run CrazyCopy with a graphical view (i.e. a Window). This gives the user the ability to quickly Copy folders into a Destination Folder using just drag and drop. Mini GUI is the perfect size Window to tuck away into the corner of your desktop.

The main information visible on the Mini GUI is the Destination path which is written directly on the Set Destination button. This Destination Folder is where every dropped Source Folder will be copied into.

Due to the limited visible logging, Move is not supported from the Mini GUI, and also Copy Over is always set to disabled. This reduces complexity which matches the purpose of this mini view. 

image.png

If running a CrazyCopy session where you want to Copy multiple folders to the same parent Destination Folder, or where screen real estate is limited, use this Mini GUI View!

To open the Mini GUI View click the Mini GUI button on the Top Right of the Main CrazyCopy Window (see below). This switches CrazyCopy to the Mini GUI View (as above).

image.png

Due to the intended use case of this view, the limited size restricts the number of controls and hence the options available. Also the view can only show a limited amount of information. Because of these limitations, Mini GUI only supports Copy operations and only Copying when the Final Destination Folder does not already exist (Copy Over is not supported). The Safe Move setting is not applicable at all, because this option does not affect Copy operations.

No overwriting or merging of existing folders can occur when using the Mini GUI.

Canceling a Mini Gui Copy

Copy operations cannot be cancelled from the Mini GUI, there is no Cancel button.

A Copy operation cannot start until a valid Destination Folder has been set.

Setting the Destination

A new Destination Folder is set by clicking on the Destination button (1). 

image.png

Then navigate to the Destination Folder into which you want the Source Folders copied (2). Accept the selected Destination Folder with the Select Folder button (3).

image.png

Once selected and validated the new Destination Folder will be displayed on the Destination Button (4 see below).

image.png

Switching Back to the Main GUI Window

To switch back to the Main GUI Window at any time, click on the Switch View button on the Mini GUI (5), see above.

Copying a Folder

Every dropped valid Source Folder will be copied into the Destination Folder.

  1. Open a File Explorer (1) and find the folder you want to Copy
  2. Drag the Source Folder (2) you want to Copy (Copy Over and Move are not permitted from the Mini GUI)
  3. Drop the Source Folder (3) on to the CrazyCopy Mini GUI Window

image.png

To Copy a folder, simply drag and drop the Source Folder from Windows File Explorer directly onto the Mini GUI Window. Every folder dropped onto the Mini GUI is first checked against CrazyCopy's folder validation rules. If both the Source and Destination Folders are valid, then the Source Folder is copied to the Destination Folder. Folder Moves are not supported from the Mini GUI View; only Copy can be performed and never Copy Over, therefore dragging and dropping a folder onto this view will never move a folder, or overwrite an existing folder.

Setting Dialogs and Threads to Use

The Mini GUI uses two settings that can only be configured in the Main Window:

To change the Threads to Use or the Dialogs setting, switch back to the Main GUI Window using the Switch View button (see below). Simply change the required option and then switch back to the Mini GUI again.

image.png

Once a CrazyCopy begins the Destination and Switch to Main GUI buttons are disabled. Only when the Copy completes will they become available again. Additionally, Source Folders cannot be dropped on to the Mini GUI view if CrazyCopy is already performing a Copy, only when the current Copy has finished can another Folder be dropped.

Progress

The Mini GUI does not contain a progress bar so when copying begins the Destination pushbutton will show the status as "Copying...".

The Destination button will also show the Source and Destination Folder paths.

To check the progress of a Copy in more detail monitor the CrazyCopy System Log file from a terminal, or use a live log viewer (I use glogg).

image.png

If the final validation fails or an error occurs during a Copy, the Mini GUI border will change color to Red.

A Red border indicates:

image.png

Next Copy Operation

A design principle for the Mini GUI is to tell the user when something has gone wrong and when the next Copy can begin. If the Copy is successful the Mini GUI border will remain Green and the "Copying..." status message will no longer be shown (see below). This means the next Source Folder can be dropped on to the Mini GUI to start a new Copy operation.

image.png

Command Line

The Command Line version of CrazyCopy is called CrazyCopyCLI.exe. When it runs it will not open or display any graphical windows. Its output is written to the stdout and stderr streams.

You can start the CrazyCopy Command line version passing in arguments to set the application's inputs. The installation process will ensure CrazyCopyCLI.exe can be executed (by the user who installed it), from any folder in a Command Prompt, Windows Terminal or PowerShell window.

As the user.config files are not shared between the GUI and the CLI versions of CrazyCopy, all the current setting in the GUI version will not be used by the CLI (Command Line) version CrazyCopyCLI.exe, and vice versa.

Note that command line arguments are not case-sensitive, they can use any case. All arguments supported by the command line are obvious as they are prefixed with a double hyphen.

Some examples are:

 --copy
--move
--copyover
--help
--info
--threads

CrazyCopyCLI can be called with the suffix .exe or without it, the same file will execute if using .exe or not.

When running from the command line the CrazyCopy version will be displayed on the console and also recorded in the log file. The full command line that was used to start CrazyCopy will also be logged in the log file.

NOTE: If specifying paths that contain any spaces from the Command Line, they must be enclosed with double quotations Example "c:\My Path With Space And Quotes"

Starting Command Line CrazyCopyCLI (Headless Mode)  

Use the CLI version of CrazyCopy (CrazyCopyCLI) runs without any graphical windows or controls. This executable should be used by automated scripts or to interface with AI Agents/LLMs etc.

All CLI Move operations use CrazyCopy's Safe Move.

To Run a CrazyCopy Operation from the Command Line or a script use

CrazyCopyCLI.exe

or just

CrazyCopyCLI

To see the list of arguments that CrazyCopyCLI supports, pass the command line argument --help to CrazyCopyCLI

PS C:\Users\marcu> CrazyCopyCLI --help

CrazyCopy Version: 1.0.85.0
Complete Command Line Was: "C:\Users\marcu\AppData\Local\Microsoft\WindowsApps\CrazyCopyCLI.exe" --help
Help: '--help'

Valid CLI Usage:
     CrazyCopyCLI.exe --threads <threads to use>                     - No Auto Start. Set Threads to Use Only
     CrazyCopyCLI.exe --destination <destination>                    - No Auto Start. Set Destination Folder Only
     CrazyCopyCLI.exe --info                                         - Show CLI Settings
     CrazyCopyCLI.exe --source <source> --copy                       - Auto Start Copy with Source Folder
     CrazyCopyCLI.exe --source <source> --move                       - Auto Start Move with Source Folder
     CrazyCopyCLI.exe <source> <destination> --move                  - Auto Start Safe Move Operation
     CrazyCopyCLI.exe <source> <destination> --copy                  - Auto Start Copy Operation with Copy Over Disabled
     CrazyCopyCLI.exe <source> <destination> --copy --copyover       - Auto Start Copy Operation with Copy Over Enabled
     CrazyCopyCLI.exe --help                                         - This Usage Guide

PS C:\Users\marcu>
Setting the Threads to Use from the Command Line

Set the number of threads for the CLI to the number you want to use or the default will be used. The minimum number of threads is 2, and the Maximum is system dependant. 

C:\Users\marcu>CrazyCopyCLI --threads 10

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --threads 10
Called with Set Number of Threads
=== SUCCESS ===
Command Line Set the Threads To Use:10
SUCCESS: Set the Number of Threads to 10 From the Command Line.

You can find the maximum number your system supports by checking the log, or calling the CLI with a large number eg 100

C:\Users\marcu>CrazyCopyCLI --threads 99

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --threads 99
Called with Set Number of Threads
ERROR: Invalid thread count '99'. The Number of Threads to Use must be a whole number between 2 and 32
Current Settings from the Command Line

To see all the current settings in the Command Line version of CrazyCopy use the --info argument. Note that the Number of Threads to Use is displayed and the current Destination Folder. The Source Folder isn't re-used between operations and therefore not useful after its been used, the user will always set a new Source Folder when they want to Copy or Move a folder.

Copy Over must always be passed in explicitly if required. A Move is always a Safe Move. Therefore these options are fixed when using the command line and therefore can not be set. 

PS C:\Users\marcu> CrazyCopyCLI --info

CrazyCopy Version: 1.0.85.0
Complete Command Line Was: "C:\Users\marcu\AppData\Local\Microsoft\WindowsApps\CrazyCopyCLI.exe" --info
SUCCESS: --info Called From Command Line
Current Threads To Use: 2
Current Destination: d:\My New Folder
Copy and Move from the Command Line

There are two methods to Copy or Move a folder using the command line.

  1. First set a Destination Folder then pass Source Folders into CrazyCopy via the command line, one source folder at a time. This is the best way if the Destination Folder remains the same 
  2. Second, call CrazyCopy with the Source and Destination Folders together from a single command line  

When specifying a path on the command line (e.g. source or destination folders), if the path contains spaces then it must be enclosed with double quotes.

Path seperators must be a single backslash \ (Windows convention). Forward slashes / or double backslashes \\ are not supported.

Example: Splitting Source and Destination calls to Copy or Move

CrazyCopyCLI --destination "c:\mydest"

C:\Users\marcu>CrazyCopyCLI --destination "c:\mydest"

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --destination "c:\mydest"
Called with Destination to Set Context Menu
=== SUCCESS ===
Context Menu Completed Setting the Destination: c:\mydest

CrazyCopyCLI --source "c:\mysrc" --copy

C:\Users\marcu>CrazyCopyCLI --source "c:\mysrc" --copy

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --source "c:\mysrc" --copy
Called with Source to Copy or Move From A Folder Context Menu
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: COPY
Source: c:\mysrc
Destination: c:\mydest
Final Destination: c:\mydest\mysrc
Maximum System Threads: 32
Threads Available Set by User: 10

Processing files...

=== SUCCESS ===
Files and Folders Processed: 7
Total Elapsed Operation Time : 0.02 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 10


Copy has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\mysrc'.

Matching Counts for Source: c:\mysrc AND Destination: c:\mydest\mysrc
Matching  Source Files: 7 Preprocess Destination: 0
Destination Now: 7  Destination Duplicates: 0
Matching  Source Folders: 1 Preprocess Destination: 0 Destination Now: 1 Destination Duplicates: 0
Matching  Source Reparse Point Files: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0

PASS Normal Files - Expected: 7 Actual: 7
PASS Link Files - Expected: 0 Actual: 0
PASS Dir Reparses - Expected: 0 Actual: 0
PASS Folders - Expected: 1 Actual: 1

Total Items In Source: 8
Items In Destination Before Copy: 0
Items In Destination After Copy: 8
Destination Duplicates Overwritten: 0

SUCCESS: Called From Context Menu

CrazyCopyCLI --source "c:\mysrc_two" --copy

NOTE - First set the number of threads to 10, then 195,250 files were copied with 10 threads in 43.6 seconds

C:\Users\marcu>CrazyCopyCLI --source "L:\Golden_CC_Benchmark_Source_Folders\Golden_01" --copy

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --source "L:\Golden_CC_Benchmark_Source_Folders\Golden_01" --copy
Called with Source to Copy or Move From A Folder Context Menu
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: COPY
Source: L:\Golden_CC_Benchmark_Source_Folders\Golden_01
Destination: c:\mydest
Final Destination: c:\mydest\Golden_01
Maximum System Threads: 32
Threads Available Set by User: 10

Processing files...

=== SUCCESS ===
Files and Folders Processed: 40105
Total Elapsed Operation Time : 20.51 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 10


Copy has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\Golden_01'.

Matching Counts for Source: L:\Golden_CC_Benchmark_Source_Folders\Golden_01 AND Destination: c:\mydest\Golden_01
Matching  Source Files: 40045 Preprocess Destination: 0
Destination Now: 40045  Destination Duplicates: 0
Matching  Source Folders: 855 Preprocess Destination: 0 Destination Now: 855 Destination Duplicates: 0
Matching  Source Reparse Point Files: 24 Preprocess Destination: 0 Destination Now: 24 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 36 Preprocess Destination: 0 Destination Now: 36 Destination Duplicates: 0

PASS Normal Files - Expected: 40045 Actual: 40045
PASS Link Files - Expected: 24 Actual: 24
PASS Dir Reparses - Expected: 36 Actual: 36
PASS Folders - Expected: 855 Actual: 855

Total Items In Source: 40960
Items In Destination Before Copy: 0
Items In Destination After Copy: 40960
Destination Duplicates Overwritten: 0

SUCCESS: Called From Context Menu

NOTE - this copy used 32 threads. Also deleted the copied mysrc_two folder so we can copy it again and compare

C:\Users\marcu>CrazyCopyCLI --threads 32

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --threads 32
Called with Set Number of Threads
=== SUCCESS ===
Command Line Set the Threads To Use:32
SUCCESS: Set the Number of Threads to 32 From the Command Line.

CrazyCopyCLI --source "c:\mysrc_two" --copy
NOTE - 195,250 files were copied again this time with 32 threads in  24.7 seconds

C:\Users\marcu>CrazyCopyCLI --source "L:\Golden_CC_Benchmark_Source_Folders\Golden_01" --copy

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --source "L:\Golden_CC_Benchmark_Source_Folders\Golden_01" --copy
Called with Source to Copy or Move From A Folder Context Menu
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: COPY
Source: L:\Golden_CC_Benchmark_Source_Folders\Golden_01
Destination: c:\mydest
Final Destination: c:\mydest\Golden_01
Maximum System Threads: 32
Threads Available Set by User: 32

Processing files...

=== SUCCESS ===
Files and Folders Processed: 40105
Total Elapsed Operation Time : 11.87 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 32


Copy has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\Golden_01'.

Matching Counts for Source: L:\Golden_CC_Benchmark_Source_Folders\Golden_01 AND Destination: c:\mydest\Golden_01
Matching  Source Files: 40045 Preprocess Destination: 0
Destination Now: 40045  Destination Duplicates: 0
Matching  Source Folders: 855 Preprocess Destination: 0 Destination Now: 855 Destination Duplicates: 0
Matching  Source Reparse Point Files: 24 Preprocess Destination: 0 Destination Now: 24 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 36 Preprocess Destination: 0 Destination Now: 36 Destination Duplicates: 0

PASS Normal Files - Expected: 40045 Actual: 40045
PASS Link Files - Expected: 24 Actual: 24
PASS Dir Reparses - Expected: 36 Actual: 36
PASS Folders - Expected: 855 Actual: 855

Total Items In Source: 40960
Items In Destination Before Copy: 0
Items In Destination After Copy: 40960
Destination Duplicates Overwritten: 0

SUCCESS: Called From Context Menu

Deleted the mysrc_two folder again and to move it this time with 195,520 files, and with 32 threads took 22.3 seconds
CrazyCopyCLI --source "c:\mysrc_two" --move

C:\Users\marcu>CrazyCopyCLI --source "c:\mysrc_two" --move

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  --source "c:\mysrc_two" --move
Called with Source to Copy or Move From A Folder Context Menu
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: MOVE
Source: c:\mysrc_two
Destination: c:\mydest
Final Destination: c:\mydest\mysrc_two
Maximum System Threads: 32
Threads Available Set by User: 32

Processing files...

=== SUCCESS ===
Files and Folders Processed: 195250
Total Elapsed Operation Time : 22.39 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 32


Move has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\mysrc_two' The Source Folder:'c:\mysrc_two' is Now Being Deleted To Complete the Safe Move.

Matching Counts for Source: c:\mysrc_two AND Destination: c:\mydest\mysrc_two
Matching  Source Files: 195250 Preprocess Destination: 0
Destination Now: 195250  Destination Duplicates: 0
Matching  Source Folders: 3906 Preprocess Destination: 0 Destination Now: 3906 Destination Duplicates: 0
Matching  Source Reparse Point Files: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0

PASS Normal Files - Expected: 195250 Actual: 195250
PASS Link Files - Expected: 0 Actual: 0
PASS Dir Reparses - Expected: 0 Actual: 0
PASS Folders - Expected: 3906 Actual: 3906

Total Items In Source: 199156
Items In Destination Before Copy: 0
Items In Destination After Copy: 199156
Destination Duplicates Overwritten: 0

SUCCESS: Called From Context Menu

Example: Pass Source and Destination in together to Copy or Move
CrazyCopyCLI "c:\mysrc" "c:\mydest" --copy

C:\Users\marcu>CrazyCopyCLI "c:\mysrc" "c:\mydest" --copy
CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  "c:\mysrc" "c:\mydest" --copy
Running Command Line Version.
Checking arguments for Headless mode
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: COPY
Source: c:\mysrc
Destination: c:\mydest
Final Destination: c:\mydest\mysrc
Maximum System Threads: 32
Threads Available Set by User: 32
Processing files...

=== SUCCESS ===
Files and Folders Processed: 7
Total Elapsed Operation Time : 0.01 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 32

Copy has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\mysrc'.
Matching Counts for Source: c:\mysrc AND Destination: c:\mydest\mysrc
Matching  Source Files: 7 Preprocess Destination: 0
Destination Now: 7  Destination Duplicates: 0
Matching  Source Folders: 1 Preprocess Destination: 0 Destination Now: 1 Destination Duplicates: 0
Matching  Source Reparse Point Files: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0

PASS Normal Files - Expected: 7 Actual: 7
PASS Link Files - Expected: 0 Actual: 0
PASS Dir Reparses - Expected: 0 Actual: 0
PASS Folders - Expected: 1 Actual: 1
Total Items In Source: 8
Items In Destination Before Copy: 0
Items In Destination After Copy: 8
Destination Duplicates Overwritten: 0
SUCCESS: Called From Command Line

CrazyCopyCLI "c:\mysrc_two" "c:\mydest" --copy

C:\Users\marcu>CrazyCopyCLI "c:\mysrc_two" "c:\mydest" --copy

CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  "c:\mysrc_two" "c:\mydest" --copy
Running Command Line Version.
Checking arguments for Headless mode
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: COPY
Source: c:\mysrc_two
Destination: c:\mydest
Final Destination: c:\mydest\mysrc_two
Maximum System Threads: 32
Threads Available Set by User: 32
Processing files...
=== SUCCESS ===
Files and Folders Processed: 195250
Total Elapsed Operation Time : 26.52 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 32
Copy has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\mysrc_two'.
Matching Counts for Source: c:\mysrc_two AND Destination: c:\mydest\mysrc_two
Matching  Source Files: 195250 Preprocess Destination: 0
Destination Now: 195250  Destination Duplicates: 0
Matching  Source Folders: 3906 Preprocess Destination: 0 Destination Now: 3906 Destination Duplicates: 0
Matching  Source Reparse Point Files: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0

PASS Normal Files - Expected: 195250 Actual: 195250
PASS Link Files - Expected: 0 Actual: 0
PASS Dir Reparses - Expected: 0 Actual: 0
PASS Folders - Expected: 3906 Actual: 3906

Total Items In Source: 199156
Items In Destination Before Copy: 0
Items In Destination After Copy: 199156
Destination Duplicates Overwritten: 0
SUCCESS: Called From Command Line

CrazyCopyCLI "c:\mysrc_two" "c:\mydest" --move
Delete c:\mydest\mysrc_two so we can move it this time

C:\Users\marcu>CrazyCopyCLI "c:\mysrc_two" "c:\mydest" --move
CrazyCopy Version: 1.0.55.0
Complete Command Line Was: CrazyCopyCLI  "c:\mysrc_two" "c:\mydest" --move
Running Command Line Version.
Checking arguments for Headless mode
=== CrazyCopy Headless Mode ===
CopyOver: False
Action: MOVE
Source: c:\mysrc_two
Destination: c:\mydest
Final Destination: c:\mydest\mysrc_two
Maximum System Threads: 32
Threads Available Set by User: 32
Processing files...
=== SUCCESS ===
Files and Folders Processed: 195250
Total Elapsed Operation Time : 27.44 Seconds
Maximum Threads in System: 32
Threads Available to CrazyCopy: 32

Move has Completed the Copy and Validation of the Final Destination Folder:'c:\mydest\mysrc_two' The Source Folder:'c:\mysrc_two' is Now Being Deleted To Complete the Safe Move.

Matching Counts for Source: c:\mysrc_two AND Destination: c:\mydest\mysrc_two
Matching  Source Files: 195250 Preprocess Destination: 0
Destination Now: 195250  Destination Duplicates: 0
Matching  Source Folders: 3906 Preprocess Destination: 0 Destination Now: 3906 Destination Duplicates: 0
Matching  Source Reparse Point Files: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0
Matching  Source Reparse Point Folders: 0 Preprocess Destination: 0 Destination Now: 0 Destination Duplicates: 0

PASS Normal Files - Expected: 195250 Actual: 195250
PASS Link Files - Expected: 0 Actual: 0
PASS Dir Reparses - Expected: 0 Actual: 0
PASS Folders - Expected: 3906 Actual: 3906

Total Items In Source: 199156
Items In Destination Before Copy: 0
Items In Destination After Copy: 199156
Destination Duplicates Overwritten: 0
SUCCESS: Called From Command Line

Context Menus From Windows Explorer Folder

CrazyCopy can also Copy or Move Folders via Windows Explorer's Folder Context Menu. Once installed, CrazyCopy adds the following Context Menu options to all folders in Windows File Explorer : 

CrazyCopy -> Set as Destination 

CrazyCopy -> Copy To Destination

CrazyCopy -> Move To Destination (Uses CrazyCopy Safe Move)

The screenshot below shows the additional CrazyCopy cascade button and 3 push buttons, these are shown when the user right clicks on a Folder from the Windows desktop or File Explorer

image.png

Note that the last button, Move To Destination, is not available from an open folder background menu in File Explorer. This button is only available from an actual Folder Icon Context Menu.

Move operations from the Context Menus use CrazyCopy's Safe Move. Also Copy Over is disabled for all copies from the Context Menus.

Copy or Move from Context Menus

  1. Right Click on the Destination Folder first in Windows File Explorer

    image.png

    or Right Click the Background of an Open Folder in File Explorer 

    image.png

  2. Select the Set as Destination 
  3. Right Click the Source Folder in Windows File Explorer or Right Click the Background of an Open Folder in File Explorer 
  4. Select Copy To Destination or Move To Destination to copy or move the Source Folder to the Destination Folder

The chosen Destination Folder remains saved and will stay the same until it is changed from the Context menu (or the command line). So you do not always have to set the Destination Folder before you Copy or Move from the Context Menus. It's recommended to just set it again though if you can't remember the exact path it is currently set to!

To Set the Number of Threads to use when Copying or Moving from the Context Menus use the Command Line --threads argument (see below).

Note: If purchasing CrazyCopy from outside the Microsoft Store, then this option requires the user to select "Add to Folder Context Menus" during the installation process.

To keep the number of menu items on the Context Menu reasonable, the user must use the command line to make changes to the number of threads. To Set the Number of Threads to use for the Context Menus use the Command Line --threads option like this 

C:\Users\marcu>CrazyCopyCLI --threads 32

CrazyCopy Version: 1.0.97.0
Complete Command Line Was: CrazyCopyCLI  --threads 32
Called Set Number of Threads From Context Menu or CLI
=== SUCCESS ===
Command Line Set Threads To Use: 32
SUCCESS: Set the Number of Threads to 32 From the Command Line.

CrazyCopy User.Config 

CrazyCopy saves the user's settings in a user.config file. There are two of these configuration files. The first stores a single shared set of settings for both the Command Line and the Context Menu versions of CrazyCopy. The second config file stores the settings for the Graphical version of CrazyCopy.

These user.config files (and therefore the settings), are not shared between the GUI version of CrazyCopy and the Command Line/Context Menu versions of CrazyCopy. This allows the user to seperate the use of the GUI version of CrazyCopy from the Context Menus or Command Line version, no interference from each other will arise. You can set the Destination Folder with the Context Menus and keep it set whilst also using the Graphical Version of CrazyCopy with a different Destination Folder.

The GUI User Settings file is saved in a location like this (notice the CrazyCopy.exe in the folder name):

<User Folder>\AppData\Local\Void-Pointer_Ltd\CrazyCopy.exe_<HASH ID>\<Version>

Example:

C:\Users\marcu\AppData\Local\Void-Pointer_Ltd\CrazyCopy.exe_Url_daodigrkn2bj5up2y4orgjzszfz2hzi4\1.0.99.0

The non GUI, CLI version of CrazyCopy uses a different path for its user.config (notice the CrazyCopyCLI.exe in the folder name):

<User Folder>\AppData\Local\Void-Pointer_Ltd\CrazyCopyCLI.exe_<HASH ID>\<Version>

Example:

C:\Users\marcu\AppData\Local\Void-Pointer_Ltd\CrazyCopyCLI.exe_Url_upfd5r1wyssywtkjhfii2pszrqu1blyc\1.0.50.0

A Microsoft Store Application (using a .msix installation file), virtualizes this folder as its not supposed to be accessed like a normal folder by the user. So be aware that this is a folder location controlled by Windows and is subject to appear only in the right conditions. 

The settings are stored in XML format in a text file. Here is an example :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings">
            <section name="CrazyCopy.UserSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <CrazyCopy.UserSettings>
            <setting name="SourceFolder" serializeAs="String">
                <value>h:</value>
            </setting>
            <setting name="SafeMove" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="CopyOver" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="DestinationFolder" serializeAs="String">
                <value>D:\CC_Dest\Golden_All\a</value>
            </setting>
            <setting name="ThreadCount" serializeAs="String">
                <value>17</value>
            </setting>
            <setting name="Dialogs" serializeAs="String">
                <value>False</value>
            </setting>
        </CrazyCopy.UserSettings>
        <CrazyCopy.Properties.Settings>
            <setting name="SmallGUISize" serializeAs="String">
                <value>390, 530</value>
            </setting>
            <setting name="SmallGUILocation" serializeAs="String">
                <value>0, 0</value>
            </setting>
            <setting name="LogGUISize" serializeAs="String">
                <value>3262, 1044</value>
            </setting>
            <setting name="LogGUILocation" serializeAs="String">
                <value>0, 0</value>
            </setting>
            <setting name="MainGUILocation" serializeAs="String">
                <value>271, 1220</value>
            </setting>
        </CrazyCopy.Properties.Settings>
    </userSettings>
</configuration>

Avoid editing config files manually as the application may fail to start if an error is introduced. A user.cofig file can be deleted at any time, and the system will roll back to use default options, creating a new user.config during the next session. 

If the application fails to start after editing this file (which you shouldn't do !), try deleting the user.config file. This may help to get CrazyCopy to start up again. Use Windows File Browser or the Command Line to delete the user.config file. Restart CrazyCopy after deleting the config file, and then re-select any options you require. The config will be saved as the application closes. If the Dialogs option is enabled then the user must confirm the Save when closing CrazyCopy, however if Dialogs is disabled then the User Settings are always saved when the GUI version closes. 

New Files and Folders Ownership

The owner of newly created Final Destination Files and Folders is determined by the default owner SID in the security token under which CrazyCopy is running. For a user who belongs to the local Administrators group, Windows may assign ownership to the built-in Administrators group even when CrazyCopy is running without elevation.

CrazyCopy operation ACL behavior
Copy File or Folder to a new destination New objects, so inherit destination folders ACLs
Copy Over into existing destination Existing folders, so retain same ACLs
Overwrite an existing file Existing Destination File, so retains original ACL
Create new objects during a merge New objects, so they inherit the destination ACLs
Non-safe same-volume Move Existing objects, so they retain the Source ACLs
Safe Move

New Objects, so they inherit the Destination ACLs

Note on Permissions (Access Control List or ACL)

In Windows (on NTFS File Systems Only) each file can have a Security Descriptor that includes permissions and ownership rules. There are several layers of permissions for files and folders, typical permissions include : 

These permissions can be applied granularly i.e. to a user, or more generally i.e. a group, admins, guests etc. Permissions can be inherited down from parent folders to subfolders and files. Permissions can also be overridden, and explicitly applied to subfolders or files.

Microsoft’s general rule is that newly created or copied objects inherit applicable permissions from their destination parent, while an object moved within the same NTFS volume normally retains its original permissions.

The ACLs in the destination folder depend on

  1. Whether an OS Move (Safe Move off) is being performed, or a Copy/Safe Move
  2. If a new file or folder is being created in the destination 
  3. If an existing file in the destination is being overwritten (use overwritten files)

An existing Final Destination Folder when Copy Over is used is not overwritten, its contents is changed. Therefore the Final Destination Folder will retain its original ACL. This also includes all the files and folders inside the Final Destination Folder that are unique and not overwritten by the Source contents.

For the situations below a new Final Destination Folder and its contents will always be created, because the Final Destination Folder can not already exist, because if it did exist, then the operation would be prevented from executing in the first place!

So for the 2 actions above all new Files and Folders created will adopt the Parent Folder's inheritable permissions (if inheritance is enabled). If no inheritable permissions exist on the parent folder then Windows will create a security descriptor using inherited permissions and the security context of the process creating the file or folder (CrazyCopy or CrazyCopyCLI).

File Locks

Windows applications and services can open files in a way that prevents other processes from accessing them, including just reading the file. If CrazyCopy attempts to Copy or Move a Source Folder that contains a file that is currently locked in this way the operation will fail with an error similar to:

The process cannot access the file 'D:\\Projects19\\Vis Studio 2026\\crazycopy\\.vs\\CrazyCopy\\FileContentIndex\\34c05899-dacb-4a7a-88a9-cc8fdbe726ba.vsidx' because it is being used by another process.

CrazyCopy, like other applications, cannot bypass this type of file lock, which stops CrazyCopy Copying or Moving the file. The process that currently has the file open must release the lock before CrazyCopy can successfully access the file and complete the Copy or Move of the Source Folder. If this error occurs, identify the application or service that has locked the file using a tool such as

Close the process or stop the service. Once the file is no longer locked, retry the CrazyCopy Copy or Move again. See Windows Help for more details on file Locking.

Supported Special File and Object Types

A shortcut can be made using the Windows File Explorer. One way to create a shortcut is to right click on an existing file or folder, and then select Desktop (Create Shortcut). The shortcut wizard will guide the user through to make a .lnk shortcut file. The special shortcut file contains metadata comprising of

  1. The path of the target file or target folder that the shortcut file (.lnk) is pointing at
  2. The Working Folder used to execute the shortcut from

image.png

Or right click in an empty folder space in the Windows File Browser

image.png

Copying a Folder with Shortcut Links inside will copy the actual .lnk files (not what they are pointed at/the targets). This means the .lnk file will still target the original target file or folder. 

Moving a folder with shortcut links inside will move the actual .lnk files (not what they are pointed at/the targets). This means the .lnk file will still target the original target file or folder. If however the target file or Folder is also being moved along with the Shortcut File, then the shortcut's target will be changed to point at the newly moved target Folder or File. If this didn't happen, then after the target file was moved, the shortcut would no longer work, as it would be pointing at a missing File or Folder.

A Folder Shortcut can be a Destination Folder that another folder can be copied or moved into with CrazyCopy. Or a Folder Shortcut can be the Source Folder that will be copied or moved to a Destination Folder. The same with Junctions and Symbolic Directory Links, they too can be Source or Destination Folders. 

Junctions

The following command will create a junction object

A junction is a directory reparse object which links and redirects to a folder and is treated by Windows like it is a real folder itself. Copying or moving a junction file keeps the same target as the original junction file being copied or moved. If however a Copy or Move is being performed and the target directory is also in the path being copied or moved, then the junction will be retargetted to the newly copied or moved directory. If CrazyCopy didn't do this, the Move would move the Target Folder and the new junction files would point at the old stale targets, which no longer exists as they too have been moved. And for Copy the new Folder would still point to old files in the original Folder, creating a permanent dependency between the old and new Folders.

Windows junctions do not support stored relative targets. Although mklink /J may be given a relative target path during creation, Windows resolves it during the creation and stores the junction target as an absolute path.

A Junction can be a Destination Folder that another folder can be copied or moved into using CrazyCopy. Or a Junction can be the Source Folder that will be copied or moved into a Destination Folder. 

The following command will create a hard link object

Copying or moving hard links resolves them to a real file, meaning the hardlink B.txt in the example above, would become a real file called B.txt and from copying A.txt.

These are Windows files that are made with the mklink tool. In order to create links the Windows user requires either a Developer environment, or to be an admin user. If you are running CrazyCopy as a normal (non Administrator) Windows user it may not be possible with your account privileges to recreate symbolic links. 

There are 2 types of symbolic link, file and directory. Also the target of the symbolic link can be relative to the symbolic link file, or non-relative. Different behaviour makes sense for each of these types. 

This table shows the behaviour of CrazyCopy for Symbolic links. The term internal means that the target of the link is also in the tree being copied or moved. The term external means the target of the link is NOT in the tree being copied or moved. Relative means relative path, and absolute means a non-relative path.

Original symbolic link

location and path type

Affect on the Destination target
Internal, relative Remapped destination target and converts to an absolute path ?
Internal, absolute Remapped destination target and keeps the same absolute path
External, relative Original resolved target converted to absolute path
External, absolute Original stored target unchanged, still using same absolute path
Target is NOT Being Moved or Copied with the Link
Target is Being Moved or Copied with the Link

Otherwise if a Move was being performed, then the target file in the Source folder would also move, so the target would no longer be at the symbolic links target location, the symbolic link would therefore be pointing at a dangling file reference i.e. nothing. If the symbolic link in the source folder was being copied, then again the new symbolic link will point to the new file or directory in the Destination folder, otherwise the new Destination tree will have dependencies on the old Source tree, and if the source tree is deleted in the future, the new Destination symbolic links won't work.

Relative Paths
Directory Symbolic Links

The following command will create a directory symbolic link object

A directory symbolic link is a reparse object which links to a folder and is treated as if it is a real folder itself. It stores the path to the target folder. Copying or moving a directory symbolic link file keeps the same target as the original directory symbolic link file being copied or moved. If however a Copy or Move is being performed and the target directory is also in the path being copied or moved, then the directory symbolic link will be retargetted to the newly copied or moved directory. If CrazyCopy didn't do this, the Move would move the target folder and the new directory symbolic link files would point at the old stale targets, which no longer exists as they too have been moved. And for copy, the new folder would still point to old source files in the original source folder, creating a non-obvious, permanent dependency between the old and new folders.

A Directory Symbolic Links can be a Destination Folder that another folder can be copied or moved into using CrazyCopy. Or a Directory Symbolic Links can be the Source Folder that will be copied or moved into a Destination Folder. 

The following command will create a symbolic link file object

Moving Target Files and Folders (pointed to by Symbolic Links, Junctions, Shortcuts)

Note that when moving any folders or files always make sure you are not moving the targets of any links or shortcuts that are not also in the Source Tree being moved or copied.

For example, if you have a Windows Desktop shortcut

c:\Users\Desktop\MyShortcut.lnk (a .lnk file)

that is linked to the target file

d:\MyFolder\MyShortcutTarget.exe

If the parent folder d:\MyFolder is moved, then the target of the shortcut MyShortcut.lnk has moved, and therefore the shortcut will no longer work (as the shortcut's target file d:\MyFolder\MyShortcutTarget.exe is no longer at the shortcut target's location). Windows can sometimes repair these missing links, but this depends on a complex set of conditions.   

Windows Filesystems 

The above descriptions are mainly for the NTFS file system. A list of the main NTFS features is in the table below. The other two file systems covered are FAT32 and exFAT which are used with most SD cards, USB sticks etc. They support almost none of the features in the table below. The difference between them is that exFAT supports files larger than 4GB , while Fat32 only supports a maximum file size of 4GB.

Feature File System
Windows ACLs NTFS Only
Owner stored per object NTFS Only
Permission inheritance NTFS Only
Read-only, hidden, system and archive attributes NTFS, exFAT and FAT32
Metadata journalling NTFS Only
EFS file encryption NTFS Only
NTFS compression NTFS Only
Hard links NTFS Only
Symbolic links/reparse points NTFS Only
Junctions/mount points NTFS Only
Alternate data streams NTFS Only
Sparse files NTFS Only
Disk quotas NTFS Only
4 GiB File size NTFS, exFAT and FAT32
Greater than 4 GiB File size NTFS and exFAT
Suitable Windows system drive NTFS Only

How does CrazyCopy handle WSL folders ?

Windows Subsystem for Linux (WSL) allows Linux environments to run within Windows. NTFS file systems in modern Windows versions can support some linux features. A major difference between Windows and Linus is the support for case sensitive file and folder names. Linux supports filenames with case whereas Windows, by default, ignores case differences when comparing file or folder names. For example, Linux considers FILE.txt and file.txt to be two different files, while Windows normally considers them to refer to the same file.

If wsl is enabled in Windows then it is possible to enable per-directory case sensitivity on an NTFS file systems, thus allowing linux like file and folder naming. File and Folder names that differ only by letter case can coexist within the same folder.

For example 

A folder with per-directory Case Sensitivity Enabled could contain the following:

D:\Source\
    SubFolder\
        FILE.txt
        file.txt
    subfolder\
        FILE.txt
        file.txt
    SUBFOLDER\
        FILE.txt
        file.txt

With per-directory case sensitivity enabled on D:\Source and each of its three subfolders, all three subfolders and all six files are distinct objects. A Default installation of Windows on the othr hand would only see these unique files and folders, if case sensitivity was disabled (or not supported).

D:\Source\SubFolder
D:\Source\SubFolder\file.txt

Therefore when copying a Source folder that contains case sensitive folders it will fail if Windows, the NTFS Disk and the Destination Folders do not also support per-directory case sensitivity.

To reduce the risk of overwriting files or losing data, Copy Over is not permitted if the Source folder itself, or any of its subfolders has per-directory case sensitivity enabled. CrazyCopy checks for this condition before copying or moving begins, and it will reject the operation if Copy Over is enabled.

When Copy Over is disabled, CrazyCopy may still encounter filename collisions if the destination cannot distinguish between filenames that differ only by letter case. In this situation, the operation will fail rather than deliberately merge the conflicting files.

CrazyCopy displays an error message explaining the problem.

Example: Moving an NTFS USB Drive Between Windows Computers

Consider a USB flash drive formatted with NTFS and connected to a Windows computer that supports per-directory case sensitivity.

Several folders are created, case sensitivity is enabled on them, and files with names differing only by letter case are added.

The USB drive is then removed and connected to another Windows computer where the required per-directory case-sensitivity functionality is unavailable or cannot be used by CrazyCopy.

Although the drive is still formatted with NTFS, the destination may be unable to preserve the distinct filenames contained in the source.

Attempting to copy or move these folders may therefore fail because the destination cannot represent all the source files and folders without filename collisions.

CrazyCopy does not intentionally overwrite one case-distinct source file with another to resolve these conflicts.

Copy Over remains prohibited whenever the Source Folder or any of its subfolders has NTFS per-directory case sensitivity enabled.

Paths

When specifying a path in the GUI application (e.g. source or destination) do not enclose the path in any double quotes.

Example of Wrong Path: "c:\My Path"
Example of Correct Path: c:\My Path

When specifying a path on the command line (e.g. source or destination), if the path contains spaces then it must be enclosed with double quotes. 

Example of Wrong Path: c:\My Path
Example of Correct Path: "c:\My Path"

Irrespective of where the path is entered, path seperators must always be a single backslash \ (the Windows convention) as forward slashes / or double backslashes \\ are not supported.

CrazyCopy Release Versioning

Every release package that is published has a unique version string. Sections of the string are incremented between releases or set back to zero. Whatever changed in a new CrazyCopy release will affect the part of the version string that is incremented. All parts on the right of the incremented number are reset back to 0.

There are 4 numerical components of the version string.

A.B.C.D

Example : 1.0.90.0

A = Major Release Version : 1

A major release increment represents a major change to the application and should be assumed to mean that it breaks any existing integration and is not backwardly compatible. It may not be possible to migrate any existing setup/integration/configuration to the new release if the major version is incremented. However, after launch this is extremely rare.

B = Feature Release Version : 0

A new version that increments the Feature version number is a release that will contain new features. The previously published API and the default behaviour of CrazyCopy have not changed, so this is a backward compatible release, which is explained in more detail below. New features may have added new APIs, but al lexisting APIs remain unchanged.

C = Minor Release Version : 90

A new version that increments the Minor number is a release that contains only small changes from the previous release. Hotfixes, non default behaviour changes etc. This type of release is for bug fixes, correction of behaviour etc. and is common. The API and the default behaviour of CrazyCopy have not changed, so this is also a backwards compatible release, which is explained in more detail below.

D = Packaging Version : 0

This is when the source code and the application's behaviour have not changed. The package layout has changed. There will not be any discernable difference in behaviour of CrazyCopy if the last packaging version is the only number that's changed. Examples are help file corrections, new branding, icons etc

Multiple numbers in the release string will change between 2 releases. When a number changes it resets the numbers to the right back to 0. Each incremented release will be based on the last release, meaning all new features and bug fixes accumulate into new releases. For Example:

1.50.0.1    First Feature Set

1.51.0.0    First Feature Set + New Feature

1.51.1.0    First Feature Set + New Feature + Bug Fix

1.51.2.0    First Feature Set + New Feature + 2 Bug Fixes

1.51.2.1    First Feature Set + New Feature + 2 Bug Fixes (No behaviour difference to 1.51.2.0 - package change i.e. help file)

1.52.0.0    Second Feature Set (added New Features), other digits reset back to 0 <- Includes all previous features and bug fixes

Backward Compatibility Behaviour

Backward Compatibility means that using any 2 versions of the application (with the same major version number), will demonstrate the same default behaviour (unless broken default behaviour was fixed between releases), and will also support the exact same Command Line arguments and syntax (contract).

Backwardly Compatible Command Line

The API of CrazyCopy is currently just the command line arguments that can be passed into the program at startup. The API is defined as both the arguments and the syntax (the order the arguments are passed in, and whether they are optional/mandatory). There is currently no API library but one may be added in a future release.

The API will always be kept constant between releases with the same major version number. This means any scripts that call CrazyCopy from the command line will behave the same if you upgrade to a new minor version. The behaviour may change, or CrazyCopy may even fail to start up if its upgraded to a new major version i.e. upgrading from 2.1 to 3.1. However as stated above, new major versions are rare after Store publication.

Changes to the API are permitted when the major number is incremented. Backward Compatibility breaking changes include renaming arguments, deleting arguments, changing the argument order, making arguments mandatory or optional, and just to repeat these can only happen in a new major version.

There are some API changes that do not break backward compatibility. These include

The above two API changes that do not break backward compatibility can occur in any release except when only the packaging version is changed.

Removing Log Files

After an uninstall, any CrazyCopy log files created by the system or saved by the user will remain intact to allow for future referencing. However if you wish to remove them all simply delete this folder

<USER FOLDER>\Documents\CrazyCopy\Logs

For example :

C:\Users\dave\Documents\CrazyCopy\Logs

Extra Information

  1. Frequently Asked Questions
  2. Troubleshooting and Support
  3. List of Unsupported Operations
  4. Shortcuts, Junctions and Directory Symbolic Links
  5. Reparse Point and Shortcut Remapping Rules
  6. Comparison to Other Folder Copy Tools
  7. CrazyCopy Quick Start Guide
  8. Running from the Command Line 
  9. Benchmarks Tests vs Windows GUI

Revision #92
Created 8 August 2026 07:29:16 by marcus
Updated 25 October 2026 02:25:49 by marcus