Prompting for Files or Folders
It’s generally good practice to avoid hard-coding file and folder paths in a script. Prompting the user to select files and folders makes for a more dynamic script that won’t break when paths change.
Prompting for a File
Use the Standard Additions scripting addition’s choose file
command to prompt the user to select a file. Listing 26-1 and Listing 26-2 demonstrate how to use this command to display the simple file selection dialog with a custom prompt shown in Figure 26-1.
A quick way to move files with a “cut and paste” action on a Mac is to use a keyboard shortcut. This shortcut works for a single file or for multiple files. To use the shortcut, first, open Finder by clicking the Finder (the smiling face) icon in the Dock. Then, open the folder that holds the item or items that you want to cut. Extract to this folder + Filenames – for a similar effect but with a folder made out of the file. Extract to other – opens a drop-down menu to choose another location. Regardless of what tool you use, it is a good practice to delete the.zip file after you extract its content because keeping both consumes more space. Keep all of the files you want to add to your ZIP archive in a single folder. Open the folder containing your files in Finder. Select the files you want to add to the ZIP archive, right-click on any one file, and select Compress X Items (where X is the number of items you’ve selected). MacOS will create a ZIP file with all your selected files. Here's how: Open the folder with files or folders you want to zip up Select the items you want to include in the zip file and right-click on any one of the items. Select 'Compress (x) Items' from the pop-up menu. It’s generally good practice to avoid hard-coding file and folder paths in a script. Prompting the user to select files and folders makes for a more dynamic script that won’t break when paths change. Prompting for a File. Use the Standard Additions scripting addition’s choose file command to prompt the user to select a file.
APPLESCRIPT
Listing 26-1AppleScript: Prompting for a fileset theDocument to choose file with prompt 'Please select a document to process:'
--> Result: alias 'Macintosh HD:Users:yourUserName:Documents:ImportantDoc.pages'
JAVASCRIPT
Listing 26-2JavaScript: Prompting for a filevar app = Application.currentApplication()
app.includeStandardAdditions = true
var document = app.chooseFile({
withPrompt: 'Please select a document to process:'
})
document
// Result: Path('/Users/yourUserName/Documents/ImportantDoc.pages')
Prompting for a Specific Type of File
If your script requires specific types of files for processing, you can use the choose file
command’s optional of type
parameter to provide a list of acceptable types. Types may be specified as extension strings without the leading period (such as 'jpg'
or 'png'
) or as uniform type identifiers (such as 'public.image'
or 'com.apple.iwork.pages.sffpages'
). Listing 26-3 and Listing 26-4 show how to prompt for an image.
APPLESCRIPT
Listing 26-3AppleScript: Prompting for an imageset theImage to choose file with prompt 'Please select an image to process:' of type {'public.image'}
--> Result: alias 'Macintosh HD:Users:yourUserName:Pictures:IMG_0024.jpg'
JAVASCRIPT
Listing 26-4JavaScript: Prompting for an imagevar app = Application.currentApplication()
app.includeStandardAdditions = true
var image = app.chooseFile({
withPrompt: 'Please select an image to process:',
ofType: ['public.image']
})
image
// Result: Path('/Users/yourUserName/Pictures/IMG_0024.jpg')
Prompting for Multiple Files
To let the user choose more than one file, include the choose file
command’s optional multiple selections allowed
parameter. Listing 26-5 and Listing 26-6 display a prompt asking for multiple images, as shown in Figure 26-2.
APPLESCRIPT
Listing 26-5AppleScript: Prompting for multiple imagesset theImages to choose file with prompt 'Please select some images to process:' of type {'public.image'} with multiple selections allowed
--> Result: {alias 'Macintosh HD:Users:yourUserName:Pictures:IMG_0024.jpg', alias 'Macintosh HD:Users:yourUserName:Pictures:IMG_0025.jpg', alias 'Macintosh HD:Users:yourUserName:Pictures:IMG_0026.jpg'}
JAVASCRIPT
Listing 26-6JavaScript: Prompting for multiple imagesvar app = Application.currentApplication()
app.includeStandardAdditions = true
var images = app.chooseFile({
withPrompt: 'Please select some images to process:',
ofType: ['public.image'],
multipleSelectionsAllowed: true
})
images
// Result: [Path('/Users/yourUserName/Pictures/IMG_0024.jpg'), Path('/Users/yourUserName/Pictures/IMG_0025.jpg'), Path('/Users/yourUserName/Pictures/IMG_0026.jpg')]
Prompting for a Folder
Use the Standard Additions scripting addition’s choose folder
command to prompt the user to select a folder, such as an output folder or folder of images to process. Listing 26-7 and Listing 26-8 demonstrate how to use this command to display the simple folder selection dialog with a custom prompt shown in Figure 26-3.
APPLESCRIPT
Listing 26-7AppleScript: Prompting for a folderset theOutputFolder to choose folder with prompt 'Please select an output folder:'
--> Result: alias 'Macintosh HD:Users:yourUserName:Desktop:'
JAVASCRIPT
Listing 26-8JavaScript: Prompting for a foldervar app = Application.currentApplication()
app.includeStandardAdditions = true
var outputFolder = app.chooseFolder({
withPrompt: 'Please select an output folder:'
})
outputFolder
// Result: Path('/Users/yourUserName/Desktop')
Prompting for Multiple Folders
To let the user choose more than one folder, include the choose folder
command’s optional multiple selections allowed
parameter, as shown in Listing 26-9 and Listing 26-10.
APPLESCRIPT
Listing 26-9AppleScript: Prompting for multiple foldersset theFoldersToProcess to choose folder with prompt 'Please select the folders containing images to process:' with multiple selections allowed
--> Result: {alias 'Macintosh HD:Users:yourUserName:Desktop:', alias 'Macintosh HD:Users:yourUserName:Documents:'}
JAVASCRIPT
Listing 26-10JavaScript: Prompting for multiple foldersvar app = Application.currentApplication()
app.includeStandardAdditions = true
var foldersToProcess = app.chooseFolder({
withPrompt: 'Please select an output folder:',
multipleSelectionsAllowed: true
})
foldersToProcess
// Result: [Path('/Users/yourUserName/Desktop'), Path('/Users/yourUserName/Documents')]
How Do I Extract Files From Multiple Folders On A Mac
Copyright © 2018 Apple Inc. All rights reserved. Terms of Use | Privacy Policy | Updated: 2016-06-13