>我有一个嵌套的文件结构,其中父文件夹包含多个不同类型数据的文件夹。我正在使用 ImageJ 宏脚本批处理其中一个文件夹中的所有图像文件。我目前需要单独处理每个文件夹,但我想批量处理文件夹。我已经查找了多个文件夹的一些批处理,但似乎代码正在处理所有文件夹中的所有文件夹和文件。我只需要处理每个目录中的一个文件夹(所有名称都相同)。图像来自仪器,没有任何元数据,因此文件被保存为这样以分离实验,其中实验的所有数据都包含在父文件夹中。此外,我需要运行两个不同的脚本,一个接一个。如果我能合并这些,那就太好了,但我也不知道如何做。
结构的一个示例是:
- 实验 1/变量 1/已处理
- 实验 1/变量 2/已处理
我目前正在每个"已处理"文件夹上单独运行我的宏。我想在每个"变量"文件夹中批处理每个"已处理"文件夹。
任何帮助将不胜感激,我对编码真的很陌生,只是在努力尽可能多地学习和自动化。
谢谢!
您是否尝试过遇到的批处理脚本? 阅读 ImageJ 提供的批处理示例使我相信它适用于您的示例。 如果你还没有测试它,你应该这样做(你可以在测试文件查找部分工作时,在实际宏的位置放一个像"print(list[i])"这样的命令。
要合并两个不同的脚本,最简单的选择是使它们成为单独的函数。 即:
// function to scan folders/subfolders/files to find files with correct suffix
function processFolder(input) {
list = getFileList(input);
list = Array.sort(list);
for (i = 0; i < list.length; i++) {
if(File.isDirectory(input + File.separator + list[i]))
processFolder(input + File.separator + list[i]);
if(endsWith(list[i], suffix))
processFile(input, output, list[i]);
processOtherWay(input, output, list[i]);
}
}
function processFile(input, output, file) {
// Do the processing here by adding your own code.
// Leave the print statements until things work, then remove them.
print("Processing: " + input + File.separator + file);
print("Saving to: " + output);
}
function processOtherWay(input, output, file) {
// Do the processing here by adding your own code.
// Leave the print statements until things work, then remove them.
print("Processing: " + input + File.separator + file);
print("Saving to: " + output);
}
如果目标不是在完全相同的图像上运行它们,请再次使它们成为独立的函数,并使脚本的文件夹排序部分分为两部分,一部分用于函数 1,另一部分用于函数 2。
你总是可以把你拥有的代码嵌套在另一个或两个for循环中。
numVariables = ;//number of folders of interest
for(i = 1; i <= numVariables; i++) //here i starts at 1 because you indicated that is the first folder of interest, but this could be any number
{
openPath = "Experiment1/variable" + i + "/processed";
files = getFileList(openPath);
for(count = 0; count < files.length; count++) //here count should start at 0 in order to index through the folder properly (otherwise it won't start at the first file in the folder)
{
//all your other code, etc.
}
}
我认为这应该差不多了。