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

[文件操作] [已解决]迅雷已完成文件复制到Bitcomt过程中变量和语法的问题

本帖最后由 thp2008 于 2023-9-19 16:29 编辑

我让Ai给我写了个将迅雷已下载完成的部分(跳过所有.bt.xltd文件),复制到BitComet 继继续下载,同时删除BitComet 同目录下的同名.bc!文件。
1、但是Ai始终写的,都没办法,成功跳过所有.bt.xltd文件
2、就是删除BitComet 同目录下的同名.bc!文件,Ai所始终处理不了.bc!后面这个感叹号。所以无法成功删除。
3、最好帮我加一个判断,就是迅雷已下载完成的,BitComet也完成了的,这种就跳过,不要复制了。也就是,第一段,得出的文件名,加多一个判断,如果在Bitcomt中也存在,并且没有.bc!那就跳过。
Ai也没那么聪明,有些东西,还是要靠各位高手。
帮我看看,修复这些问题。谢谢!
  1. @echo off
  2. title 将迅雷已下载完成的部分,复制到BitComet 继继续下载,同时删除BitComet 同名.bc!文件。
  3. setlocal enabledelayedexpansion
  4. set xl=F:\XunLei\原创精品电影1000GB电影
  5. set bt=E:\BitComet\原创精品电影1000GB电影
  6. echo.
  7. rem 递归复制文件和目录结构,排除%xl%目录下的*.bt.xltd文件
  8. echo 正在检查并移动文件...
  9. for /r "%xl%" %%i in (*) do (
  10.     set "exclude=%%i"
  11.     if "!exclude!" neq ".bt.xltd" (
  12.         set "source=%%i"
  13.         set "destination=!source:%xl%=%bt%!"
  14.         for %%d in (!destination!) do (
  15.             set "destination=%%~dpd"
  16.         )
  17. rem 检查BitComet目录是否存在同名的.bc!文件
  18. set "bcfile=!destination!%%~nxi.bc^!"
  19.         if exist "!bcfile!" (
  20.             echo 删除已存在的.bc!文件: !bcfile!
  21.             del "!bcfile!"
  22.         )
  23.         rem 创建目标目录(如果不存在)
  24.         if not exist "!destination!" (
  25.             mkdir "!destination!"
  26.         )
  27.         rem 复制文件到目标目录
  28.         copy "!source!" "!destination!"
  29.     )
  30. )
  31. echo.
  32. echo 文件移动完成!
  33. pause
  34. endlocal
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

https://netcut.cn/bathome
打开后,在中间,选“文件(1个)”下载链接在下面

TOP

回复  thp2008


请参考Q-04把bat文件保存为ANSI编码:
Batcher 发表于 2023-9-19 14:49


感谢老大,我测试了一下,基本上可行,只是有一点小逻辑性问题:

就是我需要运行两次这个批处理才能满足要求,第一次,不能删除,复制过去的文件.bc!
再运行一次就删除了。但是两次运行都会再复制一次,测试的小文件,没关系,但是大文件,就很浪费时间。我根据你提供的代码 ,修改了一下,已经可以了。
  1. @echo off
  2. set "xl=F:\XunLei\原创精品电影1000GB电影"
  3. set "bt=E:\BitComet\原创精品电影1000GB电影"
  4. echo 正在检查并移动文件...
  5. for /f "delims=" %%i in ('dir /b /s /a-d "%xl%" ^| findstr /v /i /e /c:".bt.xltd"') do (
  6.     set "SourceFolder=%%~dpi"
  7.     set "SourceFile=%%~nxi"
  8.     set "bcfile=%%~nxi.bc!"
  9.     setlocal enabledelayedexpansion
  10.     set "DestinationFolder=!SourceFolder:%xl%=%bt%!"
  11.     if not exist "!DestinationFolder!" md "!DestinationFolder!"
  12.     if exist "!DestinationFolder!!bcfile!" (
  13.         echo 删除BitComet目录已存同名的.bc!文件: "!DestinationFolder!!bcfile!"
  14.         del /f /q "!DestinationFolder!!bcfile!"
  15.     )
  16.     if not exist "!DestinationFolder!!SourceFile!" (
  17.     echo   开始复制文件: "!SourceFolder!!SourceFile!" "!DestinationFolder!"
  18.         copy /y "!SourceFolder!!SourceFile!" "!DestinationFolder!"
  19.     )
  20.    
  21.     endlocal
  22. )
  23. pause
复制代码

TOP

其实,在这种案例中,不需要考虑目录结构,因为BitComet在下载开始的时候,将所有目录结构都创建完成了,只是迅雷才会下一点,建一点。但是我是要求从迅雷复制到BitComet单向复制,所以就不用考虑到建目录结构,也没有关系,是我没有讲请楚,我之前的版本,Ai帮我自动做上去的,它也可能不清楚,是这么回事。

TOP

返回列表