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]]
>