batch file to copy remotly a file

i want to replace a file  (Connect.ini) that is stored on C:\Program Files\SIMS\SIMS .net  (note that SIMS .net  is a folder) in a remote computer. The new file ( the one i want to replcalce the existing one with) is stored on the root of my C: (where the script will run from). Here is what i tried:

Please note that %1 is the remote computer name
copy /y c:\Connect.ini  \\%1\C$\Program Files\SIMS\SIMS .net\

I get the following error message for this one:
'The syntax of the command is incorrect.'

rem net use z: \\%1\c$
rem del z:\Program Files\SIMS\SIMS .net\Connect.ini
rem copy c:\Connect.ini z:\Program Files\SIMS\SIMS .net\Connect.ini
rem net use z: /d

I get the following error message for this one:

C:\>net use z: /d
z: was deleted successfully.

C:\>net use z: \\A61-01\c$
The command completed successfully.

C:\>del z:\Program Files\SIMS\SIMS .net\Connect.ini
The system cannot find the path specified.

C:\>copy c:\Connect.ini z:\Program Files\SIMS\SIMS .net\Connect.ini
The syntax of the command is incorrect.

C:\>net use z: /d
There are open files and/or incomplete directory searches pending on the connection to z:.
Is it OK to continue disconnecting and force them closed? (Y/N) [N]:

 Can anyone help please?
Who is Participating?

Improve company productivity with a Business Account.Sign Up

Richard QuadlingConnect With a Mentor Senior Software DeveloperCommented:
copy /y c:\Connect.ini  "\\%~1\C$\Program Files\SIMS\SIMS .net\"
Firstly, good practice to put all paths in quotations. I can see that you haven't - so it will treat copy /y c:\Connect.ini  \\%1\C$\Program Files\SIMS\SIMS .net\ as:

 copy  file c:\connect.ini to \\%1\c$\Program with parameters  Files\SIMS\SIMS, .net\ and /y
Same with the net use.

Secondly, If run from a batch file you need two percent signs.

copy /y "c:\Connect.ini"  "\\%%1\C$\Program Files\SIMS\SIMS .net\"

Hope that works for you.
Richard QuadlingSenior Software DeveloperCommented:
Spaces act as separators on the command line.

program this is parameter number 5


program "this is parameter number 1"

Double quotes are used to embed spaces in parameters.

The same applies to program names.

C:\Program <<< program
Files\SIMS\SIMS <<< parameter 1
.NET\ <<<< parameter 2

rather than "C:\Program Files\SIMS\SIMS .NET\"

The %1 is not quite OK either.

Follow this ...

ECHO 1 = %1
ECHO 2 = %2

Save that as test.bat and run it ...

test C:\Program Files

and then

test "C:\Program Files"

See the difference?

See the problem?


OK. The problem is that I just said you need to use quotes to add spaces.

So, "%1" wraps the first parameter in quotes.

BUT you already wrapped it in quotes to get the space in to start with, so you end up with ...

""C:\Program Files""

The ~ in %~1 removes the quotes, leaving you with ...

"C:\Program Files"

You normally use ~ to strip the quotes from any parameter coming into the script and apply your own as needed.

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Richard QuadlingSenior Software DeveloperCommented:

You do ___NOT___ need 2 % for command line parameters.

You ONLY need 2 % when dealing with FOR variables.


At the command line ...

FOR %A IN (a b c) DO ECHO %A

But in a bat file ...

FOR %%A IN (a b c) DO ECHO %%A

Yeah I figured he was, I've never seen anyone use variables like that thats not in a for statement. But if not then take head olchs.
Richard QuadlingSenior Software DeveloperCommented:
If you think that is bad, try decoding this ...

Pretty obvious when you understand the syntax, but even so, a nightmare for a beginner.
SET UnivDateTokens=1-3 
FOR /F "tokens=1 delims=.:/-, " %%O IN ('DATE /T') DO SET UnivDatePart1=%%O
IF "%UnivDatePart1:~0,1%" GTR "9" SET UnivDateTokens=2-4 
FOR /F "tokens=%UnivDateTokens% delims=.:/-, " %%P in ('DATE /T') DO ( 
	FOR /F "skip=1 tokens=2-4 delims=/-,()." %%S IN ('ECHO.^|DATE') DO ( 
		SET %%S=%%P
		SET %%T=%%Q
		SET %%U=%%R
		SET UnivDatePart1=
		SET UnivDateTokens=

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.