已解决!头大~,麻烦大家看看我这句批处理为什么即不提示错误也不输出任何内容?
本帖最后由 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:,所以无论怎样写都必须用冒号。
我不晓得帮顶 echo off删了,第二段缺:就判断文件是否存在了 少了个冒号呀,路径判断,没冒号哪行。 本帖最后由 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加上后,窗口不会瞬间消失,便于观看
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)
)这段代码试验了得快上百次了,老是没找到错误所在,用“:”的话,不就与第一段代码一样了?
第一段代码之所以用英文冒号,我的理解是:两句代码写到一句里,必须用冒号,如果我写到两句里,就不需要用冒号了啊 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)
冒号不是命令分隔符 zlq_hysy 发表于 2024-2-21 11:22
冒号不是命令分隔符
感谢,,原来是判断盘符的原因,我还以为冒号是两句代码写到一行里所以才用冒号呢(学习vba留下的影响) 窄口牛 发表于 2024-2-21 11:13
少了个冒号呀,路径判断,没冒号哪行。
谢谢,,我还以为冒号的作用是两句代码写到一行里所以才用冒号呢(学习vba留下的影响),原来是判断盘符必须用冒号。 (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:) 学习了 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
看懂结果里的: 帮你谷歌问了下
您提供的代码没有问题,可以正常运行。该代码的作用是遍历 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 不存在
...
```
根据您的需求,您可以选择相应的代码进行使用。 学习了,行家一出手就知有没有 学习一下了 谢谢分享
页:
[1]