• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1946
  • Last Modified:

winscp scrip for move and replace.

hi
 i try to use winscp scrip to remove a and rename  a file on the remote site. but i got a problem by using MV , one the .bak file exist  on the folder. is it away to replace the existing file in winscp scrip?

mv *.txt  /outgoing/completed/*.bak



Error moving file 'test_20131101.txt' to '/outgoing/completed/test_20131101.bak'.
0
tristonyip
Asked:
tristonyip
  • 7
  • 6
1 Solution
 
sentnerCommented:
Unfortunately, winscp is very limited in its basic command set.  There's no way to force the "mv" command to overwrite the files.  If you want to completely blow away all the backups each time you do this, you can first delete the files in /outgoing/completed.  Another option would be to create a separate folder for each day that you do this, and put the files there.

Finally, you could use a more robust script, to first check each individual file in the base directory, check the completed directory for existence of a backup (and remove if it exists), and then do the move.  

You can also do this using .NET wrapper, though it's much more complex:
http://winscp.net/eng/docs/library
0
 
tristonyipAuthor Commented:
yes, the .net is more complex, can we add a timestamp on the txt file? and move to completed folder.

thanks
0
 
sentnerCommented:
Yes, you could add a timestamp as well, but not with the basic winscp commands.  It'd have to be done outside that process, in the script that calls winscp.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
tristonyipAuthor Commented:
that's two process, can i have one script to do the whole thing? or other program rather than Winscp ?
0
 
sentnerCommented:
Do you have direct command line access to the server in question?  If so, what OS is it?
0
 
tristonyipAuthor Commented:
yes, i can create and run cmd file. it's window 2003. thanks
0
 
sentnerCommented:
If you can run a cmd file, just do it with something like:

d:
cd outgoing
ren *.txt *.bak
move /y *.bak completed\
0
 
tristonyipAuthor Commented:
the reason we use winscp is for the sftp remote site. those outgoing and completed are in the remote site sftp server.
0
 
sentnerCommented:
Right, that's what I meant by "server".  Do you have direct command-line access to the remote server, via ssh for instance?
0
 
tristonyipAuthor Commented:
oh, no, we can not remote access the server.
0
 
sentnerCommented:
How many of the "completed" files do you want to keep?  You could always do a simple round-robin mv, deleting the oldest ones, and successively  moving into different directories, like this:

rm /outgoing/completed3/*.bak
mv /outgoing/completed2/*.bak /outgoing/completed3
mv /outgoing/completed1/*.bak /outgoing/completed2
mv /outgoing/completed/*.bak /outgoing/completed1
mv *.txt  /outgoing/completed/*.bak

Open in new window

0
 
tristonyipAuthor Commented:
well, we would like to keep them in one location. i find the way to solved my issue,  if there is an error on the .bak, i will move the rest of files in .txt to avoid the name issue. thanks


mv *.txt  /outgoing/completed/*.bak
mv *.txt  /outgoing/completed/*.txt
0
 
sentnerCommented:
That'd only solve it for the first rename.  If you want to keep them in the same location, you can also rename them such as:

rm /outgoing/completed/*.bak3
mv /outgoing/completed/*.bak2 /outgoing/completed/*.bak3
mv /outgoing/completed/*.bak1 /outgoing/completed/*.bak2
mv /outgoing/completed/*.bak /outgoing/completed/*.bak1
mv *.txt  /outgoing/completed/*.bak
0
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.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 7
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now