Re: Bare Bones Backup Button
- To: mathgroup at smc.vnet.net
- Subject: [mg111517] Re: Bare Bones Backup Button
- From: David Annetts <david.annetts at iinet.net.au>
- Date: Wed, 4 Aug 2010 05:47:52 -0400 (EDT)
Hi Murray, There is DirectoryQ ... If[Not@DirectoryQ[target], CreateDirectory@target]; D. On 2/08/2010 19:03, Murray Eisenberg wrote: > An exchange reported in [mg77581] between DrMajorBob and Selwyn Hollis > culminated, in essence, in the code below for creating a saveable > palette with a button to back up the InputNotebook. > > If the target directory for the backup (fixed in the code that creates > the palette) already exists, then each time I click the button, I get an > unwanted message > > CreateDirectory::filex : ... already exists > > in the Messages window. > > What is the best way to modify the code so as avoid that message? I can > think of two methods: > > (1) Include a separate test as to whether that directory already exists > and, if so, by-pass the CreateDirectory phase; or > > (2) Somehow trap the CreateDirectory so as to eliminate the message. > > For Method (1), how does one tell whether a directory exists? I don't > find a single function that does it. All I can see is to use first > FileExistsQ to see if there's some file with the target directory's name > and second, if the file exists, FileType to check that it's a directory. > That seems to be getting unduly complicated. > > Method (2) in principle seems simpler, and perhaps wrapping Quiet around > the entire body of the Module (which is an extended If expression) would > do the trick. But this would also suppress other messages that one might > want to see, such as when the directory does not already exist but for > some reason cannot be created; or that the directory exists but for some > reason is not writable; etc. > > Suggestions? > > The code: > > CreateDocument[PaletteNotebook[Button["Bare Bones Backup", > Module[{filename,thisnb=InputNotebook[]}, > If[thisnb=!=$Failed, > CreateDirectory[ > ToFileName[{"e:/backups","MmaBareBones"}]]; > filename= > StringJoin[ > StringReplace[(WindowTitle/.AbsoluteOptions[thisnb]), > s_~~".nb"->s],"_", > StringJoin[ToString/@ Round/@ Rest[Date[]]],".nb"]; > Export[ > ToFileName[{"e:/backups","MmaBareBones"},filename], > DeleteCases[NotebookGet[thisnb],Cell[_,"Output",___], > Infinity]]]]], > Saveable->True]] >