找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14664|回复: 7

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

[复制链接]
发表于 2024-8-30 01:14:55 | 显示全部楼层 |阅读模式
  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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-8-30 02:14:08 | 显示全部楼层
这样子么?

  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
复制代码
发表于 2024-8-30 08:51:33 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-8-30 10:30:58 | 显示全部楼层
回复 3# qixiaobin0715

你好!首先感谢你能回复,还有一点小毛病,就是下载的都跑盘符根目录下了,,意思就是  echo !aa!  输出不了结果
 楼主| 发表于 2024-8-30 10:32:25 | 显示全部楼层
回复 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
 楼主| 发表于 2024-8-30 10:40:41 | 显示全部楼层
回复 3# qixiaobin0715


    找到错误了谢谢大佬
发表于 2024-8-30 11:01:04 | 显示全部楼层
单纯的设置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
发表于 2024-8-30 11:20:35 | 显示全部楼层
其实写代码不能面面俱到,按正常情况写就行。如果考虑过多,会增加代码的复杂性,效率也会降低,也不见得能包含所有特殊情况,遇到问题解决问题就是了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:49 , Processed in 0.021181 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表