Solved

batch file to copy remotly a file

Posted on 2007-11-28
6
671 Views
Last Modified: 2008-02-01
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
ATTEMPT 1
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.'


ATTEMPT 2
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?
0
Comment
Question by:olchs
  • 4
  • 2
6 Comments
 
LVL 40

Accepted Solution

by:
RQuadling earned 500 total points
ID: 20365050
copy /y c:\Connect.ini  "\\%~1\C$\Program Files\SIMS\SIMS .net\"
0
 
LVL 2

Expert Comment

by:pinkisthenewblue
ID: 20365070
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.
0
 
LVL 40

Expert Comment

by:RQuadling
ID: 20365076
Spaces act as separators on the command line.

program this is parameter number 5

But

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

No?

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.

0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 
LVL 40

Expert Comment

by:RQuadling
ID: 20365080
pinkisthenewblue,

You do ___NOT___ need 2 % for command line parameters.

You ONLY need 2 % when dealing with FOR variables.

e.g.

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


0
 
LVL 2

Expert Comment

by:pinkisthenewblue
ID: 20365104
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.
0
 
LVL 40

Expert Comment

by:RQuadling
ID: 20365167
If you think that is bad, try decoding this ...

Pretty obvious when you understand the syntax, but even so, a nightmare for a beginner.
@ECHO OFF

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

0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Sometimes people don't understand why download speed shows differently for Windows than Linux.Specially, this article covers and shows the solution for throughput difference for Windows than a Linux machine. For this, I arranged a test scenario.I…
When you start your Windows 10 PC and got an "Operating system not found" error or just saw  "Auto repair for startup". After a while, you have entered a loop for Auto repair which does not fix anything and you will be in a  panic as all your work w…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now