likeyouli 发表于 2024-2-21 10:52:03

已解决!头大~,麻烦大家看看我这句批处理为什么即不提示错误也不输出任何内容?

本帖最后由 likeyouli 于 2024-2-21 11:36 编辑

判断我的电脑有几个分区,@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do if exist %%t: echo %%t
上边这样写一点问题都没有(echo前边有空格、冒号),会正常输出c d e分区,

@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (echo %%t)
)   这段代码即不提示错误也什么都不输出,到底有什么问题呢 ?到底是哪里格式错了呢 ?难道必须向上边一样用冒号和空格 ?


上边内容是原贴,感谢无忧网友的解答:原来是冒号惹的祸,我以为两句代码写到一行里,必须用冒号,如果写到两行里,则不需要冒号(学习vba留下的影响),这里冒号的作用代表盘符,如c:d:,所以无论怎样写都必须用冒号。

yyz2191958 发表于 2024-2-21 10:56:46

我不晓得帮顶

szwp 发表于 2024-2-21 11:09:30

echo off删了,第二段缺:就判断文件是否存在了

窄口牛 发表于 2024-2-21 11:13:01

少了个冒号呀,路径判断,没冒号哪行。

zlq_hysy 发表于 2024-2-21 11:14:25

本帖最后由 zlq_hysy 于 2024-2-21 11:18 编辑

@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t: (echo %%t)
)

pause

在if后的那个%%t必须加冒号,它判断c: d: 。。。。是否存在,echo后的%%t可加可不加,不加不显示盘符后面的“:”而已。暂停命令pause加上后,窗口不会瞬间消失,便于观看

likeyouli 发表于 2024-2-21 11:17:48

szwp 发表于 2024-2-21 11:09
echo off删了,第二段缺:就判断文件是否存在了

@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (echo %%t)
)这段代码试验了得快上百次了,老是没找到错误所在,用“:”的话,不就与第一段代码一样了?
   第一段代码之所以用英文冒号,我的理解是:两句代码写到一句里,必须用冒号,如果我写到两句里,就不需要用冒号了啊

zlq_hysy 发表于 2024-2-21 11:22:25

likeyouli 发表于 2024-2-21 11:17
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (echo %%t)


冒号不是命令分隔符

likeyouli 发表于 2024-2-21 11:28:45

zlq_hysy 发表于 2024-2-21 11:22
冒号不是命令分隔符

感谢,,原来是判断盘符的原因,我还以为冒号是两句代码写到一行里所以才用冒号呢(学习vba留下的影响)

likeyouli 发表于 2024-2-21 11:30:48

窄口牛 发表于 2024-2-21 11:13
少了个冒号呀,路径判断,没冒号哪行。

谢谢,,我还以为冒号的作用是两句代码写到一行里所以才用冒号呢(学习vba留下的影响),原来是判断盘符必须用冒号。

fuldho 发表于 2024-2-21 12:29:19

(A: B: C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:)

tilltotell007 发表于 2024-2-21 12:38:01

学习了

szwp 发表于 2024-2-21 12:38:54

likeyouli 发表于 2024-2-21 11:17
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (echo %%t)


fsutil fsinfo drives
看懂结果里的:

pengfangzhi 发表于 2024-2-21 12:51:32

帮你谷歌问了下
您提供的代码没有问题,可以正常运行。该代码的作用是遍历 C、D、E、F、G、H、I、J、K、L、M 这 11 个盘符,并输出存在(已存在文件或目录)的盘符。

之所以没有输出,是因为您没有在代码中指定要输出的内容。如果您想输出每个盘符的详细信息,可以使用以下代码:

```
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (
    echo 盘符: %%t
    echo 是否存在文件或目录: 是
)
)
```

输出结果如下:

```
盘符: C
是否存在文件或目录: 是
盘符: D
是否存在文件或目录: 是
...
```

如果您只想输出存在(已存在文件或目录)的盘符,可以使用以下代码:

```
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (
    echo %%t
)
)
```

输出结果如下:

```
C
D
...
```

您也可以使用以下代码来简化输出:

```
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t echo %%t
)
```

输出结果与上一段代码相同。

如果您想使用冒号和空格来格式化输出,可以使用以下代码:

```
@echo off
for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
if exist %%t (
    echo 盘符: %%t
) else (
    echo 盘符: %%t 不存在
)
)
```

输出结果如下:

```
盘符: C
盘符: D 不存在
...
```

根据您的需求,您可以选择相应的代码进行使用。

wjqok 发表于 2024-2-21 12:53:13

学习了,行家一出手就知有没有

guong 发表于 2024-2-21 13:47:36

学习一下了

a123456789z 发表于 2024-2-21 13:49:14

谢谢分享
页: [1]
查看完整版本: 已解决!头大~,麻烦大家看看我这句批处理为什么即不提示错误也不输出任何内容?