Board logo

标题: [其他] 【已解决】批处理:如何判断文件是否存在 [打印本页]

作者: 思想之翼    时间: 2023-5-9 06:45     标题: 【已解决】批处理:如何判断文件是否存在

本帖最后由 思想之翼 于 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
否则,结束批处理运行。
......
作者: 77七    时间: 2023-5-9 11:19

  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. )
复制代码

作者: 思想之翼    时间: 2023-5-10 15:14

本帖最后由 思想之翼 于 2023-5-10 17:10 编辑

回复 2# 77七
感谢帮助!代码运行正确。
作者: me78777    时间: 2023-5-10 18:05

@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
作者: 思想之翼    时间: 2023-5-10 22:27

回复 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
)
作者: 77七    时间: 2023-5-10 23:04

回复 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. )
复制代码

作者: 思想之翼    时间: 2023-5-11 09:40

回复 6# 77七

感谢!第17行是 set m= 吗?
作者: 77七    时间: 2023-5-11 10:29

回复 7# 思想之翼


   是的,定义为空值




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