我目前正在Adobe Illustrator 脚本。对于这些脚本中所做的每个更改,都需要将它们复制到本地 Illustrator 安装目录。我发现 Windows 的 shell 脚本和 Mac 的 bash 脚本可能是可行的方法。
虽然这是我的第一个操作系统级脚本,但使用 shell 脚本对我来说更容易。
SOURCE="$(cd `dirname $0` && pwd)/Scripts"
for app in /Applications/* ; do
appName=`basename $app`
if [[ $appName == *Adobe* ]] && [[ $appName == *Illustrator* ]] ; then
echo "Patching to '$app':"
for preset in "$app"/Presets.localized/* ; do
echo "- $preset"
# remove whole folder
rm -rf "$preset"/Scripts
# bulk copy folder
cp -r "$SOURCE" "$preset"
done
fi
done
另一方面,我无法理解 bash 脚本的语法,甚至无法理解其执行。以下是我当前的脚本。
setlocal EnableDelayedExpansion
set SOURCE=%~dp0Scripts
for /d %%a in ("%PROGRAMFILES%"/*) do (
set APP_NAME=%%~nxa
echo %APP_NAME%
)
以下是我的测试的输出。
C:\Users\hendraanggrian>(
set APP_NAME=7-Zip
echo WindowsPowerShell
)
WindowsPowerShell
C:\Users\hendraanggrian>(
set APP_NAME=Common Files
echo WindowsPowerShell
)
WindowsPowerShell
C:\Users\hendraanggrian>(
set APP_NAME=Internet Explorer
echo WindowsPowerShell
)
WindowsPowerShell
...
我的理解是APP_NAME
设置正确,因为两次尝试时它的值都一致。但是当我用 测试它的值时echo
,它返回WindowsPowerShell
。有人能告诉我这里发生了什么吗,APP_NAME
现在是7-Zip
还是WindowsPowerShell
?我甚至还没有开始脚本的复制部分。