无忧启动论坛

标题: 已解决!头大~,麻烦大家看看我这句批处理为什么即不提示错误也不输出任何内容? [打印本页]

作者: likeyouli    时间: 2024-2-21 10:52
标题: 已解决!头大~,麻烦大家看看我这句批处理为什么即不提示错误也不输出任何内容?
本帖最后由 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
我不晓得  帮顶
作者: szwp    时间: 2024-2-21 11:09
echo off删了,第二段缺:就判断文件是否存在了
作者: 窄口牛    时间: 2024-2-21 11:13
少了个冒号呀,路径判断,没冒号哪行。
作者: zlq_hysy    时间: 2024-2-21 11:14
本帖最后由 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
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
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
zlq_hysy 发表于 2024-2-21 11:22
冒号不是命令分隔符

感谢,,原来是判断盘符的原因,我还以为冒号是两句代码写到一行里所以才用冒号呢(学习vba留下的影响)
作者: likeyouli    时间: 2024-2-21 11:30
窄口牛 发表于 2024-2-21 11:13
少了个冒号呀,路径判断,没冒号哪行。

谢谢,,我还以为冒号的作用是两句代码写到一行里所以才用冒号呢(学习vba留下的影响),原来是判断盘符必须用冒号。
作者: fuldho    时间: 2024-2-21 12:29
(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
学习了
作者: szwp    时间: 2024-2-21 12:38
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
帮你谷歌问了下
  1. 您提供的代码没有问题,可以正常运行。该代码的作用是遍历 C、D、E、F、G、H、I、J、K、L、M 这 11 个盘符,并输出存在(已存在文件或目录)的盘符。

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

  3. ```
  4. @echo off
  5. for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
  6.   if exist %%t (
  7.     echo 盘符: %%t
  8.     echo 是否存在文件或目录: 是
  9.   )
  10. )
  11. ```

  12. 输出结果如下:

  13. ```
  14. 盘符: C
  15. 是否存在文件或目录: 是
  16. 盘符: D
  17. 是否存在文件或目录: 是
  18. ...
  19. ```

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

  21. ```
  22. @echo off
  23. for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
  24.   if exist %%t (
  25.     echo %%t
  26.   )
  27. )
  28. ```

  29. 输出结果如下:

  30. ```
  31. C
  32. D
  33. ...
  34. ```

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

  36. ```
  37. @echo off
  38. for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
  39.   if exist %%t echo %%t
  40. )
  41. ```

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

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

  44. ```
  45. @echo off
  46. for %%t in (c,d,e,f,g,h,i,j,k,l,m) do (
  47.   if exist %%t (
  48.     echo 盘符: %%t
  49.   ) else (
  50.     echo 盘符: %%t 不存在
  51.   )
  52. )
  53. ```

  54. 输出结果如下:

  55. ```
  56. 盘符: C
  57. 盘符: D 不存在
  58. ...
  59. ```

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

作者: wjqok    时间: 2024-2-21 12:53
学习了,行家一出手就知有没有
作者: guong    时间: 2024-2-21 13:47
学习一下了
作者: a123456789z    时间: 2024-2-21 13:49
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3