[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何查找大小为0的文件并替换?

我有两个U盘A和B,其中一个U盘A当时拷进去很多大小为0的文件,现在想用批处理找出来,并用另一个U盘B里面的同名文件、并且大小不是0的文件替换(包含子目录),谢谢

回复 1# ww0000
  1. @echo off
  2. REM 指定U盘A的所在的盘符
  3. set "U_A=X:"
  4. REM 指定U盘B的所在的盘符
  5. set "U_B=Y:"
  6. if not exist "%U_A%\" (
  7.     echo 不存在 %U_A%
  8.     goto :End
  9. )
  10. if not exist "%U_B%\" (
  11.     echo 不存在 %U_B%
  12.     goto :End
  13. )
  14. for /f "delims=" %%i in ('dir /b /s /a-d "%U_A%"') do (
  15.     if %%~zi equ 0 (
  16.         if exist "%U_B%%%~pnxi" (
  17.             copy /y "%U_B%%%~pnxi" "%%~dpi"
  18.         )
  19.     )
  20. )
  21. :End
  22. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
谢谢老师,晚上我测试一下!
另外,如果我想把大的文件覆盖小的,或者是新的覆盖旧的,代码怎么改呢?

TOP

回复 2# Batcher


    REM 指定U盘A的所在的盘符

老师,这里怎么改呀?

TOP

回复 4# ww0000


    你把两个U盘同时插到电脑上之后看看盘符分别是什么,修改第3行和第5行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


   比如说我的U盘是K:/   
第三行  set "U_A=X:"  修改成  set "K:/ "   ?

TOP

回复 6# ww0000


     set "U_A=K:"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher
老师,我在一个盘里的两个文件夹试验,文件夹1的文件是有内容的,文件夹2的文件是空的,试了不成功

    @echo off
REM 指定U盘A的所在的盘符
set "U_A=k:/1"
REM 指定U盘B的所在的盘符
set "U_B=k:/2"

if not exist "%U_A%\" (
    echo 不存在 %U_A%
    goto :End
)
if not exist "%U_B%\" (
    echo 不存在 %U_B%
    goto :End
)
for /f "delims=" %%i in ('dir /b /s /a-d "%U_A%"') do (
    if %%~zi equ 0 (
        if exist "%U_B%%%~pnxi" (
            copy /y "%U_B%%%~pnxi" "%%~dpi"
        )
    )
)

:End
pause

TOP

回复 8# ww0000


    因为这个代码最初的编写思路是为了满足顶楼要求的【两个U盘A和B】,而不是现在你尝试的【一个U盘下的两个文件夹】
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# ww0000
  1. @echo off
  2. REM 指定第1个文件夹(包含空文件)的路径
  3. set "U_A=K:\1"
  4. REM 指定第2个文件夹(不包含空文件)的路径
  5. set "U_B=K:\2"
  6. setlocal enabledelayedexpansion
  7. if not exist "%U_A%\" (
  8.     echo 不存在 %U_A%
  9.     goto :End
  10. )
  11. if not exist "%U_B%\" (
  12.     echo 不存在 %U_B%
  13.     goto :End
  14. )
  15. for /f "delims=" %%i in ('dir /b /s /a-d "%U_A%"') do (
  16.     if %%~zi equ 0 (
  17.         set "FileA=%%i"
  18.         set "FileB=!FileA:%U_A%=%U_B%!"
  19.         if exist "!FileB!" (
  20.             copy /y "!FileB!" "%%~dpi"
  21.         )
  22.     )
  23. )
  24. :End
  25. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


    老师,测试不成功

TOP

回复 11# ww0000


建议以后不要再说“不行”、“一闪而过”、“没有反应”之类的话,因为这对于想要给你进一步帮助的人来说没有任何意义。希望大家都能学会的一个知识点是:如何查看代码的报错信息。

请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher


    只提示“请按任意键继续”,按了就没了

TOP

回复 13# ww0000


    请按照12楼链接里面的方法操作,截图发出来看看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表