最近刚开始学习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
真的不知道是什么奇葩的问题导致的,好在最后解决了:)