Do you have a backslash between the drive letter and your first directory (d:\basedir ...). In your example, you don't and when I try xcopy without that slash, I get "0 files copied). When I put the slash in, it works.
{C} > ls
Directory of C:\Documents and Settings\Administrator\My Documents\tmp
[.] [..] test.txt
1 File(s) 0 bytes
{C} > xcopy "c:Documents and Settings\Administrator\My Documents\tmp\t
+est.txt" "c:Documents and Settings\Administrator\My Documents\tmp\foo
+\"
File not found - test.txt
0 File(s) copied
{C} > xcopy "c:\Documents and Settings\Administrator\My Documents\tmp\
+test.txt" "c:\Documents and Settings\Administrator\My Documents\tmp\f
+oo\"
C:\Documents and Settings\Administrator\My Documents\tmp\test.txt
1 File(s) copied
{C} > ls
Directory of C:\Documents and Settings\Administrator\My Documents\tmp
[.] [..] [foo] test.txt
1 File(s) 0 bytes
{C} > ls fool
Directory of C:\Documents and Settings\Administrator\My Documents\tmp
+\foo
[.] [..] test.txt
1 File(s) 0 bytes
Then using Perl:
#!/usr/bin/perl
use strict;
my $und_db = "C:\\Documents and Settings\\Administrator\\My Documents\
+\tmp\\test.txt";
my $out_dir = "C:\\Documents and Settings\\Administrator\\My Documents
+\\tmp\\foo";
system('xcopy', "\"$und_db\"", "\"$out_dir\\\"", '/r', '/y', '/i');
And successful output:
{C} > test
C:\Documents and Settings\Administrator\My Documents\tmp\test.txt
1 File(s) copied
{C} > ls foo
Directory of C:\Documents and Settings\Administrator\My Documents\tmp
+\foo
[.] [..] test.txt
1 File(s) 0 bytes
|