无名晓's Space活出花样,记录精彩

Time

最近刚开始学习Vue,由于没有使用vue-cli脚手架,并且本地的编译环境并非Nginx设定的web目录,所以尝试使用 npm run build 之后每次都需要手动将编译好的 dist 目录移动到Nginx设定的web目录下,非常的麻烦。(也许有更方便的办法,但耐于我是初学者一时半会不知道如何正确配置,所以使用了如下的脚本)

然后我便有了之前的以下代码:

@echo off
chcp 65001
set ORIGINAL_PATH=%cd%
cd ../..
set VUE_BUILT_PATH=%cd%
set TARGET_DEL_DIR=vuetest
set CURRENT_PATH=%VUE_BUILT_PATH%\%TARGET_DEL_DIR%
set input=N

if exist %CURRENT_PATH% (
    set /p input="本文件夹下的所有文件将被删除!此操作不可逆![Y/N]  "

    if %input% == Y (
        echo 路径: %CURRENT_PATH%  [已确认删除!]
        rd/s/q %CURRENT_PATH%
    ) else (
        echo 已取消.
    )
)

cd %ORIGINAL_PATH%
pause

结果后来经过非常之久的脚本执行,发现 set 的值 input 始终无法将参数传递到 if 语句里面,百度了半天也不知道是什么原因。

后来我突然意识到,会不会跟JavaScript一样变量都有作用域?然后我又尝试将 set input=N 移动到了 if 语句里面,结果还是不行。后来我干脆直接删除了 if 语句的判断,发现可以了。

直到那时候我才意识到可能是CMD的 "BUG" 或者 "特性" 导致的吧。

于是改进了代码之后有了如下的最终脚本:

@echo off
chcp 65001
TITLE 编译文件移动脚本
set ORIGINAL_PATH=%cd%
cd ../..
set VUE_BUILT_PATH=%cd%
set TARGET_DEL_DIR=vuetest
set CURRENT_PATH=%VUE_BUILT_PATH%\%TARGET_DEL_DIR%
set input=N

if not exist %CURRENT_PATH% (
    echo 正在移动编译文件夹...
    move %ORIGINAL_PATH%\dist %CURRENT_PATH%
    pause
    exit
)

set /p input="本文件夹下的所有文件将被删除!此操作不可逆![Y/N]  "

if %input% == Y (
    echo 路径: %CURRENT_PATH%  [已确认删除!]
    rd/s/q %CURRENT_PATH%
) else (
    echo 已取消.
)

cd %ORIGINAL_PATH%
pause

真的不知道是什么奇葩的问题导致的,好在最后解决了:)

上一篇: [转载] 线程安全和非线程安全 下一篇: [注册表] 如何在鼠标右键菜单栏中创建一个选项

添加新评论