Igtenio Posted November 23, 2005 Share Posted November 23, 2005 Hi all, I apologize if this's a stupid question. I've just started messing with AutoIt recently, and have run into a minor snag. I have a specific file I want copied to another directory on a regular basis. Seems simply at first glance; just use the FileCopy command. But I also want it to be automatically renamed if a file with that name already exists, similar to how Windows Explorer does it. So if the file is named Example.doc, the first time it's copied it'd stay as Example.doc. Then the second time, it'd become something like Example(2).doc, and the third time Example(3).doc, and so on. I've attempted using commands in AutoIt to automatically check if the last name in the list is taken, and if so, to use the next one. Just a bunch of IF commands. But I'd much rather have something which is more...seamless, I guess would be the word. Going back to my previous example, I'd like it to work like Windows Explorer does, where if the name currently exists, it just tacks on "Copy of", a number at the end of the name, or something. The problem comes in that I can't just set up a specific list and be done with it; I have to keep regular copies of this file, along with prior versions, for an amount of time which is unspecified, and for an unspecified amount of copies. For all I know, it could be Ten. Or Fifty. Or, god forbid, a thousand. So I'd like something which doesn't require me to constantly add new IFs to a script to make up for only thinking I'd need to keep X amount. As I said, I'm rather new to AutoIt and most programming in general(I've dabbled in it, but nothing extensive), so if I'm missing something, I'd appreciate it being pointed out. Thanks for your time. Link to comment Share on other sites More sharing options...
themax90 Posted November 23, 2005 Share Posted November 23, 2005 (edited) Simple!!! And please refrain from making 20 topics on a few items, lol. Just post a bunch in one topic. If FileCopy($Source, $Dest, 0) = 0 Then Local $Track = 1 Do $Track = $Track + 1 $Dest = StringSplit($Dest, ".") $Dest = $Dest[1] & "(" & $Track & ")." & $Dest[2] $Copy = FileCopy($Source, $Dest, 0) Until $Copy = 1 BTW whats this project your working on that u need so much support for? Just post a script support thread instead of a new support for each item that doens't work. Only works if there are not other dots in the file name/url. Edited November 23, 2005 by AutoIt Smith Link to comment Share on other sites More sharing options...
DoctorX Posted November 23, 2005 Share Posted November 23, 2005 Beat me to it... Anyway, here's another way to do it:Dim $filesub While 1 If FileExists ("Example" & $filesub & ".doc") Then $filesub = ($filesub + 1) Else FileCopy ("Example.txt", "Example" & $filesub & ".txt") ExitLoop EndIf Wend -DRX Link to comment Share on other sites More sharing options...
LxP Posted November 23, 2005 Share Posted November 23, 2005 BTW whats this project your working on that u need so much support for? Just post a script support thread instead of a new support for each item that doens't work.Igtenio has a total post count of one as I write this, and has not suggested in any way that they will spawn multiple threads. What on earth are you talking about? For what it's worth anyway, different threads for different problems greatly aid searches. Link to comment Share on other sites More sharing options...
themax90 Posted November 23, 2005 Share Posted November 23, 2005 Sorry I thought the author was a guy to whos question I had already answered. Sorry about that. Link to comment Share on other sites More sharing options...
MHz Posted November 23, 2005 Share Posted November 23, 2005 No period problem with this. If Not FileCopy($source, $destination) Then $position = StringInStr($source, '.', 0, -1) $filename = StringLeft($source, $position -1) $extension = StringMid($source, $position) For $i = 1 To 1000000 If FileCopy($source, $filename & "(" & $i & ")" & $extension) Then ExitLoop Next EndIf Link to comment Share on other sites More sharing options...
Igtenio Posted November 24, 2005 Author Share Posted November 24, 2005 Thank you all for your help. It's been a busy week, starting a new project and all. And to AutoIt Smith, it's alright. I do that all the time. I'll gloss over a name, and think it's another. Anyway, the reason I need something like this is due to a new project at work. While I can't talk about it in detail(Due to NDAs, which I think are absolutely stupid with a product like this, but I don't get to give input on policies), I'm the Coordinator for the Programming portion of it, and am the one responsible for drafting the Design document. For some reason I can't fathom, the Higher-ups want me to keep a daily update of the document, all the way to the initial draft(Which I begin working on in a week, after the current project wraps up). This's a whole new thing for me, since they haven't wanted this with past projects, and I'd rather just set a program to run every night instead of possibly screwing up, which would either A) Put the project on hold, or Possibly get me demoted or fired. I know, it's insane, but it's what I got told. Thank you all for your help, once again. I'm learning as much as I can, since I'd love to have the skill to fall back on, and I'd be able to help the people I'm trying to Coordinate. Link to comment Share on other sites More sharing options...
LxP Posted November 24, 2005 Share Posted November 24, 2005 Given these requirements, you may or may not instead prefer a solution that names the file according to date:FileCopy('C:\Path\File.doc', 'C:\Path\File Backup ' & @YEAR & '-' @MON & '-' & @MDAY & '.doc')which would copy C:\Path\File.doc to e.g. C:\Path\File Backup 2005-11-24.doc. Also by formatting the date this way the files will always be sorted chronologically. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now