本帖最后由 solan 于 2015-5-21 18:49 编辑
我的原意是这样的,如果不存在%AllUsersProfile%\A目录,就把%cd%\A整个文件夹和文件复制到%AllUsersProfile%,
如果存在,那么这个时候如果%AllUsersProfile%\A中没有1.exe文件,就彻底删除文件夹A,再把%cd%\A整个文件夹和文件复制到%AllUsersProfile%,
如果%AllUsersProfile%\A中存在1.exe文件,那么把它跟%cd%\A中的1.exe进行版本高低的比较:如果前者的版本低或同版本,就执行上面的复制;如果前者的版本高就不复制。
但是,我不会提取文件版本,只好比大小了,批处理如下:- if not exist "%AllUsersProfile%\A" (goto 11) else (if not exist "%AllUsersProfile%\A\1.exe" goto 22)
- for %%1 in (%AllUsersProfile%\A\1.exe) do set wind=%%~z1
- for %%1 in (%cd%\A\1.exe) do set snow=%%~z1
- if "%wind% equ %snow%" goto 22
- if "%wind% lss %snow%" goto 22
- :11
- xcopy /s/e/q/r/y "%cd%\A" "%AllUsersProfile%\A\"
- :22
- rmdir /s/q "%AllUsersProfile%\A"
- xcopy /s/e/q/r/y "%cd%\A" "%AllUsersProfile%\A\"
- pause
复制代码 但是这个代码不行,如果不存在%AllUsersProfile%\A目录倒能正常执行,一旦存在A\不管谁大小批处理立马闪退。后来我这样写,还是不行:- md "%AllUsersProfile%\A\"
- if not exist "%AllUsersProfile%\A\1.exe" (goto 22) else (
- for %%1 in (%AllUsersProfile%\A\1.exe) do set wind=%%~z1
- for %%1 in (%cd%\A\1.exe) do set snow=%%~z1
- if "%wind% equ %snow%" goto 22
- if "%wind% lss %snow%" goto 22
- if "%wind% gtr %snow%" goto end
- :22
- rmdir /s/q "%AllUsersProfile%\A" >nul 2>nul
- xcopy /s/e/q/r/y "%cd%\A" "%AllUsersProfile%\A\" >nul 2>nul
- :end
- cls)
- pause
复制代码 在此恳请哪位老大帮忙改下代码,最好是通过两文件的版本高低比较来写代码,xp和win7通用,先谢过了!! |