更新的答案
根据我目前收集到的信息,这大概是我目前所能得到的。它的评论很好,所以你可以看到它在做什么。添加一个例子,我可能会让你走得更远......
#!/bin/bash
#
# Go to the Desktop, or wherever the CSV file is and the output tree must be made
cd ~/Desktop || exit
# Parse "data.csv" using "|" as field separator
awk -F'|' '
{
# Pick up all fields of record into appropriately named variables
CCDOC=$1; FamID=$2; PtID=$3; DocType=$4; Date=$5; Ext=$6;
# Output name of directory to create, surrounded by "" to permit spaces, e.g. "Lab Test"
print "\"ROOT/" FamID "/" PtID "/" DocType "/" Date "\""
}' data.csv | xargs mkdir -p
给定这样的data.csv
文件:
CCDOC|F999|P5678|Consult|02-03-2013|PDF
CCDOC|F7777|P1111|Radiology|03-04-1999|JPG
CCDOC|F999|P4321|Lab Test|06-12-1997|PDF
你会得到这个:

原始答案
从本质上讲,您的问题的答案是mkdir -p
在创建目录的 shell 中使用命令,包括任何必要的干预目录,而无需抱怨沿途是否存在任何内容。通过将其粘贴到终端中自己尝试
mkdir -p ~/Desktop/Freddy/Frog/on/a/log
你会在你的桌面上得到这个

现在,问题是是否使用 Applescript 解析 Filemaker Pro CSV 文件。就我个人而言,我发现 Applescript 冗长得令人难以置信,以至于难以理解,并且会bash
在一周的每一天都直接使用......并且不要忘记您可以bash
通过使用 Applescript 来利用 Applescript 的所有功能
do shell script xyz
举个小例子,假设您将以下内容保存为桌面上的示例文件并将其命名为data.csv
. 注意家里有两个病人(P5678
和) 。P4321
F999
CCDOC|F999|P5678|Consult|02-03-2013|PDF
CCDOC|F7777|P1111|Radiology|03-04-1999|JPG
CCDOC|F999|P4321|Lab|06-12-1997|PDF
然后,您可以将以下单行代码粘贴到您的终端中
cd ~/Desktop && awk -F'|' '{print "ROOT/" $2 "/" $3}' data.csv | xargs mkdir -p
你最终会得到以下已经完成的

让我解释一下脚本是如何工作的。首先它将目录更改为您的桌面 ( cd ~/Desktop
),然后,如果有效 ( &&
),它会启动awk
并告诉它您每行上的字段由竖线 ( awk -F'|'
) 分隔。然后,awk 将读取所有行data.csv
,并将字段拆分并为您编号 - 所以$1
将包含CCDOC
,$2
将包含FamilyId
,$3
将包含PatientId
. 因此,对于 CSV 文件中的每一行,我们打印ROOT/FamilyId/PatientId
. 实际上,awk
脚本的输出如下:
ROOT/F999/P5678
ROOT/F7777/P1111
ROOT/F999/P4321
但是,我们将这些行传入xargs
并告诉它mkdir -p
在每一行上运行,因此它有效地执行了此操作,这使得我在上面截取的文件夹。
mkdir -p ROOT/F999/P5678
mkdir -p ROOT/F7777/P1111
mkdir -p ROOT/F999/P4321
如果您不想从终端执行此操作,而是想从 Applescript 执行此操作,您只需将相同的命令放在一个文件中并调用它,例如MarksThing
#!/bin/bash
cd ~/Desktop && awk -F'|' '{print "ROOT/" $2 "/" $3}' data.csv | xargs mkdir -p
然后在Applescript中,你会做
do shell script "MarksThing"
尽管您必须先使其可执行
chmod +x MarksThing
我知道这并不能完全回答你的问题,但我仍然不明白它的其余部分。与其猜测和浪费大量时间,您可以回答我的问题(在下面您的原始问题中),并在我做太多事情之前comments
让我知道您是否有兴趣采用这种“非 Applescript”方法。