标题: [其他] 【已解决】批处理:如何判断文件是否存在 [打印本页]
作者: 思想之翼 时间: 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
- @echo off
- for /l %%a in (1001,1,1005) do (
- set n=%%a
- setlocal enabledelayedexpansion
- for /l %%b in (1,1,7) do (
- if not exist "e:\%%b\!n:~-3!.txt" (
- pause & 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
- )
复制代码
作者: 思想之翼 时间: 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# 思想之翼
- @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
- for /l %%b in (1,1,7) do (
- if not exist "e:\%%b\!n:~-3!.txt" (
- set m=1
- )
- )
- if not defined m (
- gawk -F"=" "NR==FNR{A[$1]=$2;next}{print A[$0]}" d:\!n:~-3!.txt e:\1\!n:~-3!.txt>>f:\!n:~-3!.txt
- ) else (
- set m=
- )
- )
- endlocal
- )
复制代码
作者: 思想之翼 时间: 2023-5-11 09:40
回复 6# 77七
感谢!第17行是 set m= 吗?
作者: 77七 时间: 2023-5-11 10:29
回复 7# 思想之翼
是的,定义为空值
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |