刚入手的 mac ,纯小白
先说目的:需要用 chrome 多开
搜索一番,可以用 shell 脚本 open chrome ,也可以用 Automator 创建一个 run shell 应用(有点儿像 win 里的快捷方式?)
shell 脚本作为最后的选择,想先试着学学 Automator ,因为要创建多个,又太想一个一个手动去 Automator 创建,搜索后了解 可以用 AppleScript 来实现批量创建,但是 gpt 给的脚本有误,请教大家,这个 AppleScript 脚本该如何实现
以下 2 个 script 执行都会报语法错误:
预期是行的结尾等等,却找到“{”。
预期是行的结尾等等,却找到标识符。
set appPath to (path to desktop as text) & "OpenChromiumWithDataDir.app"
set chromiumPath to "/Applications/Chromium.app/Contents/MacOS/Chromium"
set userDataDir to "/Users/admin/Library/Chromium/Data/1"
set shellScript to chromiumPath & " --user-data-dir=" & userDataDir
tell application "Automator"
activate
set newApp to make new document
set type of newApp to application
set name of newApp to "Open Chromium with Custom Data Dir"
tell newApp
set newAction to make new "Run Shell Script" at end of actions with properties {name:"Run Shell Script", script:shellScript}
end tell
save newApp in appPath with properties {name:"Open Chromium with Custom Data Dir.app"}
end tell
tell application "Automator"
set newWorkflow to make new workflow with properties {name:"Launch Chromium with Profile 1"}
delay 1
set newLibrary to expose library of newWorkflow
set newShell to make new action of class "Run Shell Script" with properties {name:"Launch Chromium with Profile 1"}
set contents of newShell to "/Applications/Chromium.app/Contents/MacOS/Chromium --user-data-dir=/Users/admin/Library/Chromium/Data/1"
tell newLibrary to add action newShell after action 0
set newApplication to (path to desktop as text) & "Launch Chromium with Profile 1.app"
save newWorkflow in file newApplication
end tell
找到了一个简便的方法,大致思路是这样的:
1、先制作一个template.app:
cp Chromium.app template.app
删除template.app中的chromium框架(因为文件太大了)
template.app/Contents/MacOS/Chromium内容换成
#!/bin/bash
CHROMIUM_APP="/Applications/Chromium.app/Contents/MacOS/Chromium"
USER_DATA_DIR="/Users/admin/Library/Chromium/Data"
USER_CACHE_DIR="/Users/admin/Library/Chromium/Cache"
NEW_APP_NAME="USER_NAME" #这里的后面会被替换
NEW_APP_CACHE_PATH="$USER_CACHE_DIR/$NEW_APP_NAME"
NEW_APP_DATA_PATH="$USER_DATA_DIR/$NEW_APP_NAME"
$CHROMIUM_APP --disk-cache-dir=$NEW_APP_CACHE_PATH \
--user-data-dir=$NEW_APP_DATA_PATH
2、接着写一个批量生成的shell:
#!/bin/bash
# 定义要创建的应用程序数量
NUM_APPS=10
# 定义原始应用程序路径
ORIGINAL_APP="/Users/admin/Desktop/template.app"
SHORTCUT_DIR="/Users/admin/Desktop/Chrome"
# 循环创建新的应用程序副本
for i in $(seq 1 $NUM_APPS); do
# 定义新应用程序的名称
NEW_APP_NAME="User$(printf "%03d" $i)"
NEW_APP_PATH="$SHORTCUT_DIR/$NEW_APP_NAME.app"
rm -rf $NEW_APP_PATH
# 复制应用程序
cp -R "$ORIGINAL_APP" "$NEW_APP_PATH"
# 检查复制是否成功
if [ $? -ne 0 ]; then
echo "Failed to copy $ORIGINAL_APP to $NEW_APP_PATH"
exit 1
fi
# 替换文件中的关键字
sed -i "" "s/USER_NAME/$NEW_APP_NAME/g" "$NEW_APP_PATH"/Contents/MacOS/Chromium
echo "Created $NEW_APP_NAME with user directory"
done
目前生成的app使用正常,暂时不知道是否有什么隐患或影响
1
ihwbunny 107 天前
只看了第一个,你把“ with properties {name:"Open Chromium with Custom Data Dir.app"}”删了,就变清澈了。但是其实还是运行不成功。
shell 最简单, 比如下面,以后只要是把 localProfile 变量改一下,另存为一个新的脚本或者.command 文件。 如果稍微复杂点,用 shell 创建多个 open chromium 的脚本也是很容易,比如就是一个循环 for i in {1..10} 就可以帮你创建 10 个可运行脚本 用 AppleScript 创建,其实是一样的,不过它的语法更啰嗦。你上面的两个都没有涉及到创建多个的问题。 #!/bin/bash localProfile="/Users/admin/Library/Chromium/Data/1" mkdir -p "$localProfile" /Applications/Chromium.app/Contents/MacOS/Chromium --user-data-dir="$localProfile" |