批处理脚本将文件夹复制到程序文件中的某些应用程序

批处理脚本将文件夹复制到程序文件中的某些应用程序

我目前正在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?我甚至还没有开始脚本的复制部分。

相关内容