Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8119663
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T04:51:58+00:00 2026-06-06T04:51:58+00:00

I have Perl code that uses the system() function to call robocopy.exe, but it

  • 0

I have Perl code that uses the system() function to call robocopy.exe, but it looks like it’s mangling the parameters. I’m using Chef, which bundles Perl via Cygwin – “This is perl, v5.8.8 built for msys-64int”.

I think Cygwin is escaping some characters, but system() won’t show me what it’s actually passing to the shell, so I don’t know how to format the call correctly.

my $robocopyCmd = "robocopy.exe /a-:r /r:30 /w:10 c:/folder1 c:/folder2";
print "DEBUG: " . $robocopyCmd . "\n";
system($robocopyCmd);

And here is the output.

DEBUG: robocopy.exe /a-:r /r:30 /w:10 c:/folder1 c:/folder2

-------------------------------------------------------------------------------
ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

Started : Wed Jun 20 10:33:05 2012

Source - R:\30\
Dest - W:\10\

Files :
Options : /COPY:DAT /A-:R /R:1000000 /W:30

------------------------------------------------------------------------------

ERROR : Invalid Parameter #4 : c:/folder1

When I cut and paste the debug output into a shell (even a Cygwin shell) it runs just fine. However, look in the robocopy output for where it tells you the Source and Dest. Notice how it changed my argument of /r:30 to R:\30\ ?

It seems like something (cygwin or perl or system()) is automatically escaping some characters before passing them to the shell. The problem is there’s no way for me to see what it’s changing, so I don’t know how to customize my command to work properly!

Note that the behavior is exactly the same if I use backticks instead of the system() function.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-06T04:51:59+00:00Added an answer on June 6, 2026 at 4:51 am
    system($shell_cmd);
    

    never escapes anything. What could it possible be escaping from?

    The problem is that you’re trying to run a Windows shell command in the bourne shell.

    system($shell_cmd)
    

    is short for

    system('sh', '-c', $shell_cmd)
    

    on unix systems (including unix emulation layers such as the cygwin build of Perl). Does the following work?

    system('cmd', '/c', $robocopyCmd);
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have some perl code that looks something like this: my @array = map
I have some Perl code that executes a shell script for multiple parameters, to
So I have some perl code that goes something like: use strict; use XML::XPath;
I have the following code that uses 'paste' and AWK script inside Perl. use
I have 2 sub s in my perl code that are all but identical.
I have a Perl code that use threads and HTTP::Async with multiple outbound IP
I am maintaining several Perl scripts that all have similar code blocks for different
I have Python code that uses the with keyword (new in 2.6) and I
I have this Perl code that is only printing the first line instead of
I have need for a system function call, the same as those in Python,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.