Hello,
I am new to applescript. I am trying to create folder and subfolder and moving my selected folder in the subfolder. I am using “try” so if folder exist, it will not give me error. Please help. Thanks. Here is my code:
tell application “Finder”
try
set folder1 to make new folder at folder “applescriptTest” of desktop with properties {name:“folder1”}
set newFolderName to “folder2”
set folderTemp to make new folder at folder1 with properties {name:newFolderName}
end try
set movingFolder to make new folder at folder "applescriptTest" of desktop with properties {name:"movingFolder"}
move movingFolder to folderTemp
end tell
I got this error: “The variable folderTemp is not defined.”
Hi. Welcome to MacScripter.
If an error occurs in a ‘try’ block, the script flow immediately jumps to the next instruction after the block. So if folder “folder1” already exists (or folder “applescriptTest” doesn’t exist), none of the rest of the block is executed. The error occurs in the first line, so no attempt is made to create folder “folder2” and none of the variables are set. This is why the variable folderTemp doesn’t exist when you try to move folder “movingFolder”.
In a script which creates a nest of folders which may already exist, you have to test for each folder individually:
tell application "Finder"
try
set applescriptTest to folder "applescriptTest" of desktop
on error
set applescriptTest to (make new folder at desktop with properties {name:"applescriptTest"})
end try
try
set folder1 to folder "folder1" of applescriptTest
on error
set folder1 to (make new folder at folder "applescriptTest" of desktop with properties {name:"folder1"})
end try
set newFolderName to "folder2"
try
set foldertemp to folder newFolderName of folder 1
on error
set foldertemp to (make new folder at folder1 with properties {name:newFolderName})
end try
set movingFolder to (make new folder at folder "applescriptTest" of desktop with properties {name:"movingFolder"})
move movingFolder to foldertemp
end tell
Alternatively, there’s a shell script you can use which does all the testing for you:
set desktopPath to POSIX path of (path to desktop)
-- Create the whole folder hierarchy as far as "folder1" if it doesn't already exist.
do shell script "mkdir -p " & quoted form of desktopPath & "applescriptTest/folder1/"
-- Now create the new folders.
tell application "Finder"
set folder1 to folder "applescriptTest:folder1" of desktop
set newFolderName to "folder2"
try
set foldertemp to folder newFolderName of folder 1
on error
set foldertemp to (make new folder at folder1 with properties {name:newFolderName})
end try
set movingFolder to (make new folder at folder "applescriptTest" of desktop with properties {name:"movingFolder"})
move movingFolder to foldertemp
end tell
Obviously there are various ways to combine these methods. For instance, you could use the shell script to create the finished result with “movingFolder” already in “folder2”, but I presume you’re just experimenting with Finder commands at the moment.