在for的do后面频繁使用dir感觉效率是个问题,不如都用for来解决吧。
不过照你的代码思路来看,如果你的文件名出现下面的情况应该会出错。
E:\Downloads\书籍\无情剑.chm
U:\无情剑1.chm
U:\无情剑2.chm
又或者
E:\Downloads\书籍\无情剑.chm
U:\无情剑客1.chm
注:无情剑.chm和无情剑客.chm是两本书
@echo off
set book=E:\Downloads\书籍
echo.&set /p udisk=请输入手机U盘分区号(如在 N 盘就输入 N ):
for /r "%book%" %%a in (*.chm) do (
for %%b in ("%udisk%:\%%~na*.chm") do (
if %%~za leq %%~zb (echo.&echo 文件 %%~nxa没有更新) else (
echo.&echo 文件 %%~nxa已经更新,正在复制至手机中......
copy /y "%book%\%%~nxa" "%udisk%:\%%~nxb">nul
)
)
)
echo.&echo 所有更新结束,按任意键退出
pause>nul
未测试