本帖最后由 miqilaosu 于 2019-6-16 14:52 编辑
回复 2# Batcher
这个代码运行提示找不到%i,自己测试了下,是在第二个%i那出的错,但一直找不到问题所在,请版主大大帮忙看看- @echo on
- set "kb=d:"
- setlocal enabledelayedexpansion
-
- for /f "delims=*" %%i in ('dir /a-d /b *.zip,*.rar /s') do (
- set n=1001
- if %%~zi lss 10240 (
- if not exist "%kb%%%~pi%%~nxi" (
- echo,F|xcopy "%%i" "%kb%%%~pi%%~nxi" /e
- ) else (
- :cz
- if not exist "%kb%%%~pi%%~ni!n!%%~xi" (
- echo,F|xcopy "%%i" "%kb%%%~pi%%~ni!n:~1!%%~xi" /e /y
- ) else (
- set /a n+=1
- goto:cz
- )
- )
-
-
- )
- )
复制代码 上边的代码不知道为什么不能执行希望有大神解答,下边我用的笨办法做了一个,我想重名的文件不会超过50个吧,如果超过的话你自己改数吧,就是这样做执行起来太慢了点- @echo off
- set "kb=d:\b"
- setlocal enabledelayedexpansion
-
- for /f "delims=*" %%i in ('dir /a-d /b *.zip,*.rar /s') do (
- set n=1001
- if %%~zi lss 10240 (
- if not exist "%kb%%%~pi%%~nxi" (
- echo,F|xcopy "%%i" "%kb%%%~pi%%~nxi" /e
- ) else (
- for /l %%a in (1,1,50) do (
- if exist "%kb%%%~pi%%~ni-!n:~1!%%~xi" (
- set /a n+=1
- )
- )
- echo,F|xcopy "%%i" "%kb%%%~pi%%~ni-!n:~1!%%~xi"
- )
- )
-
- )
- )
复制代码 刚才FOR 循环忘了加/l报错了,这回加上了,我测试执行成功,还有之前我犯了个错误%%~zi,用引号引起来成了字符串对比,得到的文件大小不对,一定不能加引号 |