Command Line

The Command Line version of CrazyCopy is the version that does not display any Windows or Graphical User Interface. It is operated by running the application from a cmd.exe, prompt, Windows Terminal or Powershell.

You can start the CrazyCopy Command line version, passing in arguments to set the application's various inputs, by running the following command

CrazyCopyCLI

or

CrazyCopyCLI.exe

The above command is not case sensitive, so even this works

crAZYcoPYcli

The installation process will ensure that CrazyCopyCLI can be executed by the user who installed it, from any folder in a prompt, terminal or PowerShell window. Other users may need to add permissions.

The user.config file stores all CrazyCopy's settings and it is not shared between the GUI and the CLI versions of CrazyCopy. This means all settings in the user.config for the GUI Window version CrazyCopy.exe will not be used by the CLI (Command Line) version CrazyCopyCLI.exe.   So settings a Source or Destination in the GUI version will not overwrite what is set on the Command Line version, and vice versa.

Note that the command line arguments are also not case-sensitive, you can use any case. Command Line arguments are obvious because they always have a double hyphen at the front of them. Some example arguments are:

 --copy
--move
--copyover
--help

Also CrazyCopyCLI can be called either with .exe at the end or without. The same file will execute. When running from the command line the current version number of CrazyCopy will be displayed on the console (and also in the log). The full command line used to start CrazyCopyCLI will also be logged in the log file and displayed on stdout.

NOTE: If specifying paths with spaces on the Command Line, they must be enclosed with quotes.

Example: "c:\My New Path"

Starting CrazyCopyCLI (Headless) from the Command Line

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

All CLI Move operations use CrazyCopy's Safe Move.

To Run a CrazyCopy command line operation:

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   
Setting the Threads to Use from the Command Line

Note set the number of threads for the CLI to what 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 and therefore not useful, the user will always set the Source Folder when they Copy or Move. Copy Over must always be passed in explicitly if required, and a Move is always a Safe Move, so these options are fixed and not useful.

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 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 one at a time. This is the best way if the Destination Folder 
  2. Call CrazyCopy with Source and Destination Folders together in a single call.

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 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


Revision #3
Created 23 September 2026 07:11:04 by marcus
Updated 14 October 2026 04:09:54 by marcus