Skip to main content
Known Participant
December 1, 2009
Answered

Check if a file exists in network dir (JS)

  • December 1, 2009
  • 2 replies
  • 10741 views

I've found an old post that has pointed me at:

if (myFile.exists){

alert("File Exists");

}

else

alert("File doesn't exist");

The problem is that when I use the path  macname/volumes/dir/folder/folder/file.indd (which was created from variables) as myFile the script doesn't find a file that I know exists. All I get is the "File doesn't exist" alert.

Do I need to define myFile as being a string?

I'm still fumbling my way around JS, and converting Applescripts to JS to work cross-platform. Thanks in advance....

This topic has been closed for replies.
Correct answer Kasyan Servetsky

Do I need to define myFile as being a string?

No, define it like so:

var myFile = new File("/Volumes/VolumeName/FolderName/SubFolderName/FileName.indd");

2 replies

interesting_Flower157F
Inspiring
December 1, 2009

To get the path to a file i normally use this little script:

// JavaScript Document
var myFile = File.openDialog("Choose a File");
if((myFile != "")&&(myFile != null)){
    alert("Path: " + myFile + "\nType: " + myFile.type);
}

Perhaps this c/p can help you:

function mounter() {
    var myDocument = app.activeDocument;
    // we are saving the preview
    var destination = "/Volumes/myfoldername";
    //var destination = "/Users/tn/Documents/Tryksager/Design/";
    var volume = "afp://sub.dn.com/myfoldername";

    try {
        with (myDocument) {
            if(file_name = get_filename(name)) {
                    if (Folder(destination).exists) {
                    //alert("Folder exists: " + Folder(destination));
                    } else {
                    if (confirm ("Mount volume?", false, "Mount volume")) {
                        mount_volume();
                        // volume mounted, do what you need
                    } else {
                        alert("Could not mount");
                    }
                }
            }
        }
    } catch ( err ) {
        // No error warning
    }
   
    function mount_volume() {
        var myScriptFolderPath = pluginPath + "/resources/"; // Path to the applescript
        app.doScript(File(myScriptFolderPath + "mountvolume.scpt"),ScriptLanguage.applescriptLanguage);
    }

}

//The applescript for mounting volumes

(*set user_name to ""
set Dialog_1 to display dialog "Please enter your user name" default answer ""
set the user_name to the text returned of Dialog_1

set pass_word to ""
set Dialog_2 to display dialog "Please enter your password" default answer "" with hidden answer
set pass_word to the text returned of Dialog_2*)
tell application "Finder"
    try
        mount volume "afp://mysub.mydn.com/myfolder" as user name "myusername" with password "mypassword"
    end try
end tell

--

Thomas B. Nielsen

http://www.nobrainer.dk

Kasyan Servetsky
Kasyan ServetskyCorrect answer
Brainiac
December 1, 2009

Do I need to define myFile as being a string?

No, define it like so:

var myFile = new File("/Volumes/VolumeName/FolderName/SubFolderName/FileName.indd");

penyfaiAuthor
Known Participant
December 1, 2009

Kasyan

My saviour once again!

Couldn't get it to work properly, but then noticed that the BasePath variable I was using had the old Applescript style paths which included the Macname.

Took that out and it works a treat.

Many thanks again, and also to you Thomas - I was actually going to write a subscript to mount/remount missing servers, so you've read my mind.

Cheers both

Andrew

Muppet_Mark-QAl63s
Inspiring
December 1, 2009

I've recently moved from the AppleScript side and whilst I can use the do script method for mounting volumes without issue. There was also the alternative of creating aliases of my network drives. In a quick test with our works server and my idisk this worked just fine. Not sure if this is good or bad method? File.execute(); resolves this by mounting it.

var fileRef = new File ('~/Desktop/MacRaid alias');

if (fileRef.exists) {

alert('File does exist…');

if (fileRef.alias) {

alert('File is Alias? = True…');

// Passwords are in Keychain… for NO dialog

fileRef.execute();

}

else {

alert('File is Alias? = False.');

}

}

else {

alert('File does NOT exist?');

}