Board logo

标题: [文本处理] 【已解决】批处理for /f 循环语句判断问题 [打印本页]

作者: qw123456    时间: 2024-8-30 01:14     标题: 【已解决】批处理for /f 循环语句判断问题

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a a=1
  4. for /f "delims=" %%i in (urls.txt) do (
  5. for /f %%j in ("%%i\..\..") do  set "aa=%%~nxj" & md "%%~nxj" 2>nul  
  6. dezoomify-rs -l --accept-invalid-certs -H "Cookie: SSO_SESSIONID=FDDC5D671B873413C25B83569579A723" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36" %%i !aa!/!a!.jpg
  7. set /a a+=1
  8. timeout /t 0
  9. )
  10. pause
复制代码
代码没有问题,但有个小的bug。

urls.txt  内容给为:C:\Users\Administrator\Desktop\1\5976\1\tiles.yaml
C:\Users\Administrator\Desktop\1\5976\2\tiles.yaml
C:\Users\Administrator\Desktop\1\5976\3\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\4\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\5\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\6\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\7\tiles.yaml
最终新建了5976  5977 两个文件夹  ,a的值为a+=1 ,图片最终保存到  5976  5977里面的,能否判断保存文件夹发生变化时a重新赋值为1
作者: Five66    时间: 2024-8-30 02:14

这样子么?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem set /a a=1
  4. for /f "delims=" %%i in (urls.txt) do (
  5. for /f %%j in ("%%i\..\..") do  (
  6. set "aa=%%~nxj"
  7. if not defined ___"%%~nxj" set ___"%%~nxj"=1
  8. md "%%~nxj" 2>nul  
  9. dezoomify-rs -l --accept-invalid-certs -H "Cookie: SSO_SESSIONID=FDDC5D671B873413C25B83569579A723" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36" %%i !aa!/!___"%%~nxj"!.jpg
  10. set ___tmp=!___"%%~nxj"!
  11. set /a ___tmp+=1
  12. set ___"%%~nxj"=!___tmp!
  13. timeout /t 0
  14. )
  15. )
  16. pause&exit/b
复制代码

作者: qixiaobin0715    时间: 2024-8-30 08:51

回复 1# qw123456
在你的代码的基础上,按你的风格修改一下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (urls.txt) do (
  4.     for /f %%j in ("%%i\..\..") do (
  5.         if not exist "%%~nxj" (
  6.             md "%%~nxj"
  7.             set "aa=%%~nxj"
  8.             set a=1
  9.         )
  10.         dezoomify-rs -l --accept-invalid-certs -H "Cookie: SSO_SESSIONID=FDDC5D671B873413C25B83569579A723" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36" %%i !aa!/!a!.jpg
  11.         set /a a+=1
  12.         timeout /t 0
  13.     )
  14. )
  15. pause
复制代码

作者: qw123456    时间: 2024-8-30 10:30

回复 3# qixiaobin0715

你好!首先感谢你能回复,还有一点小毛病,就是下载的都跑盘符根目录下了,,意思就是  echo !aa!  输出不了结果
作者: qw123456    时间: 2024-8-30 10:32

回复 3# qixiaobin0715


    @echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (urls.txt) do (
    for /f %%j in ("%%i\..\..") do (
        if not exist "%%~nxj" (
            md "%%~nxj"
            set "aa=%%~nxj"
            set a=1
        )
        echo !aa!
        set /a a+=1
        timeout /t 0
    )
)
pause
作者: qw123456    时间: 2024-8-30 10:40

回复 3# qixiaobin0715


    找到错误了谢谢大佬
作者: Five66    时间: 2024-8-30 11:01

单纯的设置a=1 , 当urls.txt中对应的内容不连续时可能不是你想要的

例如 , urls.txt为下面这样的内容
C:\Users\Administrator\Desktop\1\5976\1\tiles.yaml

C:\Users\Administrator\Desktop\1\5977\4\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\5\tiles.yaml

C:\Users\Administrator\Desktop\1\5976\2\tiles.yaml
C:\Users\Administrator\Desktop\1\5976\3\tiles.yaml

C:\Users\Administrator\Desktop\1\5977\6\tiles.yaml
C:\Users\Administrator\Desktop\1\5977\7\tiles.yaml

作者: qixiaobin0715    时间: 2024-8-30 11:20

其实写代码不能面面俱到,按正常情况写就行。如果考虑过多,会增加代码的复杂性,效率也会降低,也不见得能包含所有特殊情况,遇到问题解决问题就是了。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2