Re: Bare Bones Backup Button
- To: mathgroup at smc.vnet.net
- Subject: [mg111632] Re: Bare Bones Backup Button
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Sun, 8 Aug 2010 07:21:22 -0400 (EDT)
DirectoryQ works nicely here. I'm surprised it wasn't used in the
originally posted code for BareBonesBackup (perhaps the function didn't
exist then?).
On 8/4/2010 5:47 AM, David Annetts wrote:
> 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]]
>>
>
--
Murray Eisenberg murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower phone 413 549-1020 (H)
University of Massachusetts 413 545-2859 (W)
710 North Pleasant Street fax 413 545-1801
Amherst, MA 01003-9305