gpt4 book ai didi

batch-file - 循环和批处理文件中的 'exists'

转载 作者:行者123 更新时间:2023-12-04 01:29:06 24 4
gpt4 key购买 nike

我很难理解以下批处理脚本:

@echo off
echo b>b.txt
for /f %%A in ('echo b.txt b.txt') do (
echo %%A
if not exist %%A (
echo does not exist.
) else (
echo %%A exist.
)
)

一开始,我确保文件“b.txt”存在,然后我希望循环输出该文件名称的两倍,并且它存在。但是,我得到的实际输出是:

b.txt
does not exists

有人可以解释这种行为吗?

最佳答案

正如建议,您可以尝试将文件名分配给变量,以确保您在两个语句中引用完全相同的内容,如下所示:

set file=b.txt
echo b>%file%
for /f %%A in ('echo %file% ^& echo %file%') do (
echo [%%A]
if not exist %%A (
echo [%%A] does not exist.
) else (
echo [%%A] exist.
)
)

我还删除了 echo off,这样你会看到扩展输出,并在 %%A 两边加上方括号以查看它的边界

编辑:一些额外的故障排除:
我可能会从命令行开始构建脚本,一次只更改一件事,然后看看它在哪里中断。

如果 b.txt 存在 echo Exists

如果成功了

for/f %A in ('echo whatever') if b.txt exist echo Exists

等等,直到

for /f %A in ('echo b.txt ^&echo b.txt') do (if exist %A (echo %A exists) else (echo not exists))

你也可以使用不同的变体(虽然我看不出它有什么不同):

for %A in (b.txt b.txt) do (if exist %A (echo %A Exists) else (echo not exists))

关于batch-file - 循环和批处理文件中的 'exists',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com