Javascript:将'choose folder'更改为特定位置
Javascript: Change 'choose folder' to specific location
我找到了一个 javascript,但它首先让用户选择一个文件夹,它将在其中抓取文件。我想创建一个监视文件夹,所以我想告诉 javascript 从中获取文件的文件夹,而不是让用户选择。我一辈子都想不出怎么做。我知道 applescript 但无法掌握 javascript。谢谢!
以下是我认为需要更改的区域:
function main() {
// user settings
var prefs = new Object();
prefs.sourceFolder = '/Volumes/SERVER_RAID/•Current/MPC'; // default browse location (default: '~')
prefs.removeFileExtensions = true; // remove filename extensions for imported layers (default: true)
prefs.savePrompt = true; // display save prompt after import is complete (default: false)
prefs.closeAfterSave = true; // close import document after saving (default: false)
// prompt for source folder
var sourceFolder = Folder.selectDialog('Where are the Front and Back files?', Folder(prefs.sourceFolder));
// ensure the source folder is valid
if (!sourceFolder) {
return;
}
else if (!sourceFolder.exists) {
alert('Source folder not found.', 'Script Stopped', true);
return;
}
// add source folder to user settings
prefs.sourceFolder = sourceFolder;
// get a list of files
var fileArray = getFiles(prefs.sourceFolder);
// if files were found, proceed with import
if (fileArray.length) {
importFolderAsLayers(fileArray, prefs);
}
// otherwise, diplay message
else {
alert("The selected folder doesn't contain any recognized images.", 'No Files Found', false);
}
}
///////////////////////////////////////////////////////////////////////////////
// getFiles - get all files within the specified source
///////////////////////////////////////////////////////////////////////////////
function getFiles(sourceFolder) {
// declare local variables
var fileArray = new Array();
var extRE = /\.(?:png)$/i;
// get all files in source folder
var docs = sourceFolder.getFiles();
var len = docs.length;
for (var i = 0; i < len; i++) {
var doc = docs[i];
// only match files (not folders)
if (doc instanceof File) {
// store all recognized files into an array
var docName = doc.name;
if (docName.match(extRE)) {
fileArray.push(doc);
}
}
}
// return file array
return fileArray;
}
///////////////////////////////////////////////////////////////////////////////
为此,您需要将所需文件夹的路径指定为字符串。
如果您查看下面的更新代码示例,您会注意到原始代码的第 4 行内容如下:
prefs.sourceFolder = '/Volumes/SERVER_RAID/•Current/MPC';
已更改为:
prefs.sourceFolder = Folder('~/Desktop/targetFolder');
现在假定目标文件夹名为 targetFolder
并且位于您的 Desktop
文件夹中。您需要根据需要更改 '~/Desktop/targetFolder'
部分以指向您实际需要的文件夹。它还假定您在 macOS 上使用 运行 作为桌面文件夹的快捷方式(即 ~/
部分)将无法在 Windows.
上识别
还有哪些方法可以指定路径?
您可以使用绝对路径指定路径名,例如:
prefs.sourceFolder = Folder('/Users/JohnDoe/Desktop/targetFolder');
注意:这个例子实际上指向与第一个例子相同的文件夹。假设用户当然叫 John Doe!
可以找到有关设置文件路径的更多信息here。
对您的代码示例进行了哪些其他更改:
示例代码中的第 9 至 22 行内容如下:
// prompt for source folder
var sourceFolder = Folder.selectDialog('Where are the Front and Back files?', Folder(prefs.sourceFolder));
// ensure the source folder is valid
if (!sourceFolder) {
return;
}
else if (!sourceFolder.exists) {
alert('Source folder not found.', 'Script Stopped', true);
return;
}
// add source folder to user settings
prefs.sourceFolder = sourceFolder;
现在是多余的。相反,它们已替换为以下代码段,如果找不到您指定的文件夹,该代码段将提醒您:
// ensure the source folder exists.
if (!prefs.sourceFolder.exists) {
alert('Source folder not found.\n' + prefs.sourceFolder, 'Script Stopped', true);
return;
}
我在下面的第 30 行添加了 main()
以调用 main
函数。但是,如果您在代码的其他地方有它,您可以将其删除。
更新的代码示例:
function main() {
// User settings
var prefs = new Object();
prefs.sourceFolder = Folder('~/Desktop/targetFolder');
prefs.removeFileExtensions = true;
prefs.savePrompt = true;
prefs.closeAfterSave = true;
// ensure the source folder exists.
if (!prefs.sourceFolder.exists) {
alert('Source folder not found.\n' + prefs.sourceFolder, 'Script Stopped', true);
return;
}
// Get a list of files
var fileArray = getFiles(prefs.sourceFolder);
// If files were found, proceed with your tasks.
if (fileArray.length) {
alert('I found image(s) in the specified folder\n' +
'Now you need to write code to perform out a task :)');
// <-- Continiue your code here
}
// otherwise, diplay message
else {
alert('The selected folder doesn\'t contain any recognized images.', 'No Files Found', false);
}
}
main(); // <-- Invokes the `main` function
/**
* getFiles - get all files within the specified source
* @param {String} sourceFolder - the path to the source folder.
*/
function getFiles(sourceFolder) {
// declare local variables
var fileArray = new Array();
var extRE = /\.(?:png)$/i;
// get all files in source folder
var docs = sourceFolder.getFiles();
var len = docs.length;
for (var i = 0; i < len; i++) {
var doc = docs[i];
// only match files (not folders)
if (doc instanceof File) {
// store all recognized files into an array
var docName = doc.name;
if (docName.match(extRE)) {
fileArray.push(doc);
}
}
}
// return file array
return fileArray;
}
我找到了一个 javascript,但它首先让用户选择一个文件夹,它将在其中抓取文件。我想创建一个监视文件夹,所以我想告诉 javascript 从中获取文件的文件夹,而不是让用户选择。我一辈子都想不出怎么做。我知道 applescript 但无法掌握 javascript。谢谢!
以下是我认为需要更改的区域:
function main() {
// user settings
var prefs = new Object();
prefs.sourceFolder = '/Volumes/SERVER_RAID/•Current/MPC'; // default browse location (default: '~')
prefs.removeFileExtensions = true; // remove filename extensions for imported layers (default: true)
prefs.savePrompt = true; // display save prompt after import is complete (default: false)
prefs.closeAfterSave = true; // close import document after saving (default: false)
// prompt for source folder
var sourceFolder = Folder.selectDialog('Where are the Front and Back files?', Folder(prefs.sourceFolder));
// ensure the source folder is valid
if (!sourceFolder) {
return;
}
else if (!sourceFolder.exists) {
alert('Source folder not found.', 'Script Stopped', true);
return;
}
// add source folder to user settings
prefs.sourceFolder = sourceFolder;
// get a list of files
var fileArray = getFiles(prefs.sourceFolder);
// if files were found, proceed with import
if (fileArray.length) {
importFolderAsLayers(fileArray, prefs);
}
// otherwise, diplay message
else {
alert("The selected folder doesn't contain any recognized images.", 'No Files Found', false);
}
}
///////////////////////////////////////////////////////////////////////////////
// getFiles - get all files within the specified source
///////////////////////////////////////////////////////////////////////////////
function getFiles(sourceFolder) {
// declare local variables
var fileArray = new Array();
var extRE = /\.(?:png)$/i;
// get all files in source folder
var docs = sourceFolder.getFiles();
var len = docs.length;
for (var i = 0; i < len; i++) {
var doc = docs[i];
// only match files (not folders)
if (doc instanceof File) {
// store all recognized files into an array
var docName = doc.name;
if (docName.match(extRE)) {
fileArray.push(doc);
}
}
}
// return file array
return fileArray;
}
///////////////////////////////////////////////////////////////////////////////
为此,您需要将所需文件夹的路径指定为字符串。
如果您查看下面的更新代码示例,您会注意到原始代码的第 4 行内容如下:
prefs.sourceFolder = '/Volumes/SERVER_RAID/•Current/MPC';
已更改为:
prefs.sourceFolder = Folder('~/Desktop/targetFolder');
现在假定目标文件夹名为 targetFolder
并且位于您的 Desktop
文件夹中。您需要根据需要更改 '~/Desktop/targetFolder'
部分以指向您实际需要的文件夹。它还假定您在 macOS 上使用 运行 作为桌面文件夹的快捷方式(即 ~/
部分)将无法在 Windows.
还有哪些方法可以指定路径?
您可以使用绝对路径指定路径名,例如:
prefs.sourceFolder = Folder('/Users/JohnDoe/Desktop/targetFolder');
注意:这个例子实际上指向与第一个例子相同的文件夹。假设用户当然叫 John Doe!
可以找到有关设置文件路径的更多信息here。
对您的代码示例进行了哪些其他更改:
示例代码中的第 9 至 22 行内容如下:
// prompt for source folder var sourceFolder = Folder.selectDialog('Where are the Front and Back files?', Folder(prefs.sourceFolder)); // ensure the source folder is valid if (!sourceFolder) { return; } else if (!sourceFolder.exists) { alert('Source folder not found.', 'Script Stopped', true); return; } // add source folder to user settings prefs.sourceFolder = sourceFolder;
现在是多余的。相反,它们已替换为以下代码段,如果找不到您指定的文件夹,该代码段将提醒您:
// ensure the source folder exists. if (!prefs.sourceFolder.exists) { alert('Source folder not found.\n' + prefs.sourceFolder, 'Script Stopped', true); return; }
我在下面的第 30 行添加了
main()
以调用main
函数。但是,如果您在代码的其他地方有它,您可以将其删除。
更新的代码示例:
function main() {
// User settings
var prefs = new Object();
prefs.sourceFolder = Folder('~/Desktop/targetFolder');
prefs.removeFileExtensions = true;
prefs.savePrompt = true;
prefs.closeAfterSave = true;
// ensure the source folder exists.
if (!prefs.sourceFolder.exists) {
alert('Source folder not found.\n' + prefs.sourceFolder, 'Script Stopped', true);
return;
}
// Get a list of files
var fileArray = getFiles(prefs.sourceFolder);
// If files were found, proceed with your tasks.
if (fileArray.length) {
alert('I found image(s) in the specified folder\n' +
'Now you need to write code to perform out a task :)');
// <-- Continiue your code here
}
// otherwise, diplay message
else {
alert('The selected folder doesn\'t contain any recognized images.', 'No Files Found', false);
}
}
main(); // <-- Invokes the `main` function
/**
* getFiles - get all files within the specified source
* @param {String} sourceFolder - the path to the source folder.
*/
function getFiles(sourceFolder) {
// declare local variables
var fileArray = new Array();
var extRE = /\.(?:png)$/i;
// get all files in source folder
var docs = sourceFolder.getFiles();
var len = docs.length;
for (var i = 0; i < len; i++) {
var doc = docs[i];
// only match files (not folders)
if (doc instanceof File) {
// store all recognized files into an array
var docName = doc.name;
if (docName.match(extRE)) {
fileArray.push(doc);
}
}
}
// return file array
return fileArray;
}