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

[其他] 【已解决】批处理:如何判断文件是否存在

[复制链接]
发表于 2023-5-9 06:45:50 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 2023-5-9 11:43 编辑

e:\1\文件夹下有文本001 002 003 004
e:\2\文件夹下有文本001 002
e:\3\文件夹下有文本001 002 003
e:\4\文件夹下有文本001 002 003 004 005
e:\5\文件夹下有文本001 002 003 004
e:\6\文件夹下有文本001 002 003
e:\7\文件夹下有文本001 002 003

若e:\1\ ~ e:\7\ 文件夹下皆存在001.txt,则
gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\001.txt e:\1\001.txt>>f:\001.txt
否则,结束批处理运行。
若e:\1\ ~ e:\7\ 文件夹下皆存在002.txt,则
gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\002.txt e:\1\002.txt>>f:\002.txt
否则,结束批处理运行。
若e:\1\ ~ e:\7\ 文件夹下皆存在003.txt,则
gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\003.txt e:\1\003.txt>>f:\003.txt
否则,结束批处理运行。
......

评分

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

查看全部评分

发表于 2023-5-9 11:19:16 | 显示全部楼层
  1. @echo off
  2. for /l %%a in (1001,1,1005) do (
  3.         set n=%%a
  4.         setlocal enabledelayedexpansion
  5.         for /l %%b in (1,1,7) do (
  6.                 if not exist "e:\%%b\!n:~-3!.txt" (
  7.                         pause & exit
  8.                 )
  9.         )
  10.         gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\!n:~-3!.txt e:\1\!n:~-3!.txt>>f:\!n:~-3!.txt
  11.         endlocal
  12. )
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

 楼主| 发表于 2023-5-10 15:14:46 | 显示全部楼层
本帖最后由 思想之翼 于 2023-5-10 17:10 编辑

回复 2# 77七
感谢帮助!代码运行正确。
发表于 2023-5-10 18:05:38 | 显示全部楼层
@echo off
dir /a-d /b /s e:\ > test.txt
for /l %%a in (1001,1,1999) do (
        set n=%%a
        call find /c "%%n:~-3%%.txt" test.txt | find "7" >nul && gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\%%n:~-3%%.txt e:\1\%%n:~-3%%.txt>>f:\%%n:~-3%%.txt
)
del test.txt

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

 楼主| 发表于 2023-5-10 22:27:57 | 显示全部楼层
回复 2# 77七

恳望指点:如下方式添加循环语句,if not exist .... exit 这句代码如何修改?

@echo off
for /l %%f in (1000001,1,1001624) do (
    setlocal enabledelayedexpansion
    set p=%%f
    XXXXXXX  '【循环改变 e:\1\ ~ e:\7\ 文件夹下的文件】

    for /l %%a in (1001,1,1999) do (
        set n=%%a
        setlocal enabledelayedexpansion
            for /l %%b in (1,1,7) do (
                if not exist "e:\%%b\!n:~-3!.txt" (
                    exit
                )
            )
        gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\!n:~-3!.txt e:\1\!n:~-3!.txt>>f:\!n:~-3!.txt
        endlocal
    )
    endlocal
)
发表于 2023-5-10 23:04:43 | 显示全部楼层
回复 5# 思想之翼


  
  1. @echo off
  2. for /l %%f in (1000001,1,1001624) do (
  3.     setlocal enabledelayedexpansion
  4.     set p=%%f
  5.     XXXXXXX  '【循环改变 e:\1\ ~ e:\7\ 文件夹下的文件】

  6.     for /l %%a in (1001,1,1999) do (
  7.         set n=%%a
  8.             for /l %%b in (1,1,7) do (
  9.                 if not exist "e:\%%b\!n:~-3!.txt" (
  10.                     set m=1
  11.                 )
  12.             )
  13.         if not defined m (
  14.                         gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\!n:~-3!.txt e:\1\!n:~-3!.txt>>f:\!n:~-3!.txt
  15.                 ) else (
  16.                         set m=
  17.                 )
  18.     )
  19.     endlocal
  20. )
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-5-11 09:40:49 | 显示全部楼层
回复 6# 77七

感谢!第17行是 set m= 吗?
发表于 2023-5-11 10:29:50 | 显示全部楼层
回复 7# 思想之翼


   是的,定义为空值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 21:33 , Processed in 0.023685 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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