How to move file using winSCP when file exist?

Advertisement

suravi
Joined:
Posts:
2
Location:
srilanka

How to move file using winSCP when file exist?

I'm developing sftp file transferring project using winSCP (C#). i want to move files in server.here is the code.

session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);
Console.WriteLine("Move File {0} to {1}", fileInfo.Name, server.DoneFilePath);    

if current moving file exist in target path it not move.so i want to rename file and move it. is there any way to do that?

Reply with quote

martin
Site Admin
martin avatar
Joined:
Posts:
27,271
Location:
Prague, Czechia

Re: How to move file using winSCP when file exist?

My answer to your question on stackoverflow.com:

If you are asking if WinSCP can do this automatically for you, the answer is "no".

You need to explicitly check target file existence and rename it before you move the file.

Note that rename and move is the same operation from WinSCP .NET Assembly API perspective. So you use Session.MoveFile method for both:
https://winscp.net/eng/docs/library_session_movefile

From your question, it's not clear if server.DoneFilePath is path to target directory (ending with slash /) or part to target file (ending with file name). Assuming is is path to target directory only:

string doneFile = server.DoneFilePath + fileInfo.Name;
if (session.FileExists(doneFile))
{
    session.MoveFile(doneFile, doneFile  + ".bak");
}

// carry on with your move code:
session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);    

https://stackoverflow.com/q/21300315/850848

Reply with quote

suravi
Joined:
Posts:
2
Location:
srilanka

Re: How to move file using winSCP when file exist?

Yes than you.


martin wrote:

My answer to your question on stackoverflow.com:

If you are asking if WinSCP can do this automatically for you, the answer is "no".

You need to explicitly check target file existence and rename it before you move the file.

Note that rename and move is the same operation from WinSCP .NET Assembly API perspective. So you use Session.MoveFile method for both:
https://winscp.net/eng/docs/library_session_movefile

From your question, it's not clear if server.DoneFilePath is path to target directory (ending with slash /) or part to target file (ending with file name). Assuming is is path to target directory only:

string doneFile = server.DoneFilePath + fileInfo.Name;
if (session.FileExists(doneFile))
{
    session.MoveFile(doneFile, doneFile  + ".bak");
}

// carry on with your move code:
session.MoveFile(server.RemoteDownloadPath + fileInfo.Name, server.DoneFilePath);    

https://stackoverflow.com/q/21300315/850848

Reply with quote

Advertisement

You can post new topics in this forum