用了两天的时间,磕磕碰碰的,终于完成了,把遇到的问题mark一下:

问题:

在调用python的os.system()做循环执行的时候,出现只执行了一次,后面虽然运行到,可是却没有执行同一个cmd脚本文件

分析一下可能出现的原因:

1:初步怀疑是python的os使用问题,可能是在调用之后需要进行重置?然后就是度娘,度了好久,没有找到个有用的信息,怕度娘不给力,FQ用了Google爸爸,还是那几个不对应的信息链接

2:查找无果,原谅我的os白痴程度,最后用试的吧,先在代码中测试:

for file in allFiles:
    time.sleep(3)
    os.system("dir")

结果执行之后正常(windows系统),那么排除掉os.system()的使用问题

3:指令没有问题,那么是不是在调用call的时候有问题呢?之后又是一番度娘,Google爸爸,叫爹喊娘都没有用了...

call 语法写的很清楚,是在调用外部脚本之后,并且在脚本执行结束之后,会接下去走之后的python脚本,那么问题出在哪里呢?

打开ScriptPNG.cmd,上面一堆的密密麻麻的东西,眼花缭乱的,好吧,静下心来仔细看看,找到最后的结束函数

:end
set finish=%time%
title Finished - %name% - %version%
if "%png%" equ "0" 1>nul ping -n 1 -w %wait_in_ms% 127.255.255.255 2>nul
if %multi_thread% neq 0 for /f "usebackq tokens=1-5 delims=;" %%a in ("%log_file%") do (
if /i "%%~xa" equ ".png" set /a "total_png_size+=%%b" & set /a "current_png_size+=%%c"
)
set /a "change_png=%total_png_size%-%current_png_size%" 2>nul
set /a "change_png_kb=%change_png%/1024" 2>nul
echo.
echo  Total: %change_png_kb% KB [%change_png% Bytes] saved.
echo.
echo.
echo  Started  at : %start%
echo  Finished at : %finish%
echo.
1>nul 2>&1 rd /s /q "%temporary_parent_folder%"
exit /b

问题就在exit /b上,百度了一下这个等同于goto:eof,并不是执行exit退出指令,所以在执行下面的os.system()时,该脚本仍然是开着的状态,就会出现设置什么的都会冲突

去掉/b,万事大吉了

Ps:中文路径如果变成乱码,会导致压缩图片执行错误,乱码中的字符出现不能使用在脚本中的符号