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

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

本帖最后由 思想之翼 于 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
否则,结束批处理运行。
......
1

评分人数

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

  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

评分人数

bat小白,请多指教!谢谢!

TOP

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

回复 2# 77七
感谢帮助!代码运行正确。

TOP

@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

评分人数

TOP

回复 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
)

TOP

回复 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

评分人数

bat小白,请多指教!谢谢!

TOP

回复 6# 77七

感谢!第17行是 set m= 吗?

TOP

回复 7# 思想之翼


   是的,定义为空值
bat小白,请多指教!谢谢!

TOP

返回列表