[PATCH 41/41] robocopy: add help message (/?)

Florian Eder others.meder at gmail.com
Mon Sep 6 09:55:18 CDT 2021


Signed-off-by: Florian Eder <others.meder at gmail.com>
---
 programs/robocopy/main.c      | 12 ++++++++++++
 programs/robocopy/robocopy.h  |  4 +++-
 programs/robocopy/robocopy.rc | 24 ++++++++++++++++++++++++
 3 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/programs/robocopy/main.c b/programs/robocopy/main.c
index 5c3c51d052a..154957ba08c 100644
--- a/programs/robocopy/main.c
+++ b/programs/robocopy/main.c
@@ -310,6 +310,11 @@ static void parse_arguments(int argc, WCHAR *argv[])
             {
                 options.create_no_new_files = TRUE;
             }
+            /* ? - Show help */
+            else if (!wcsicmp(argv[i], L"/?"))
+            {
+              options.show_help = TRUE;
+            }
             /* lev - Limit depth of subdirectories */
             else if (!wcsnicmp(argv[i], L"/lev:", 5))
             {
@@ -831,6 +836,13 @@ int __cdecl wmain(int argc, WCHAR *argv[])
                                      FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL);
     else logfile_handle = INVALID_HANDLE_VALUE;
 
+    if (options.show_help)
+    {
+        output_message(STRING_HEADER);
+        output_message(STRING_HELP);
+        return ROBOCOPY_ERROR_NO_FILES_COPIED;
+    }
+
     /* If no file filters are set, set *.* to include all files */
     if (options.files->size == 0)
     {
diff --git a/programs/robocopy/robocopy.h b/programs/robocopy/robocopy.h
index c0bdd836e31..dc3390a7f25 100644
--- a/programs/robocopy/robocopy.h
+++ b/programs/robocopy/robocopy.h
@@ -57,6 +57,7 @@ struct robocopy_options {
     BOOL create_no_new_files;
     WCHAR *logfile;
     BOOL log_append;
+    BOOL show_help;
 };
 
 struct robocopy_statistics {
@@ -93,4 +94,5 @@ struct robocopy_statistics {
 #define STRING_DELETE_DIRECTORY               1020
 #define STRING_CREATE_FILE                    1022
 #define STRING_DELETE_FILE                    1023
-#define STRING_MOVE_FILE                      1024
\ No newline at end of file
+#define STRING_MOVE_FILE                      1024
+#define STRING_HELP                           1027
\ No newline at end of file
diff --git a/programs/robocopy/robocopy.rc b/programs/robocopy/robocopy.rc
index df66753ca6b..b89418b578b 100644
--- a/programs/robocopy/robocopy.rc
+++ b/programs/robocopy/robocopy.rc
@@ -47,6 +47,30 @@ STRINGTABLE
     STRING_CREATE_FILE, " Copied File: %1\n"
     STRING_DELETE_FILE, " Deleted File: %1\n"
     STRING_MOVE_FILE, "  Moved File: %1\n"
+    STRING_HELP, "Usage: robocopy source destination [files] [options]\n\
+                 \Available Options:\n\
+                 \ /s          Copy non-empty sub-directories\n\
+                 \ /e          Copy all sub-directories\n\
+                 \ /purge      Remove files and directories already present in the destination\n\
+                 \ /mov        Remove files from source after copying them\n\
+                 \ /move       Remove files and directories from source after copying them\n\
+                 \ /l          Dry run, does no actual file system operation\n\
+                 \ /lev:<n>    Copy only files and directories until n sub-directories deep into the source\n\
+                 \ /mir        Alias of \"/e /purge\", mirrors source to destination\n\
+                 \ /xf path    Exclude files (can contain wildcards)\n\
+                 \ /xd dir     Exclude directories (can contain wildcards)\n\
+                 \ /min:<n>    Only include files that are at least n bytes big\n\
+                 \ /max:<n>    Only include files that are at most n bytes big\n\
+                 \ /minage:<n> Only include files that are at least n days old\n\
+                 \ /maxage:<n> Only include files that are at most n days old\n\
+                 \ /xo         Don't overwrite files that are newer than the source file\n\
+                 \ /xn         Don't overwrite files that are older than the source file\n\
+                 \ /xl         Don't add new files to destination\n\
+                 \ /xx         Don't remove files from the source when moving\n\
+                 \ /xc         Don't overwrite files that have the same timestamp, but different size than the\n\
+                 \             source file\n\
+                 \ /log:path   Write output to log file\n\
+                 \ /log+:path  Append output to log file\n"
 }
 
 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-- 
2.32.0




More information about the wine-devel mailing list