[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理for多数值递归不到后面的值?

  1. @echo off
  2. CD /D C:\Users
  3. for %%i in (123.* *456.* 789.*) do (
  4.     echo 可删除的: %%i
  5. )
复制代码
搜索不到*456.*和789.*只能查找到123.*的文件

对for总是一知半解,搞不懂,我哪里错了

但是我使用CD命令
  1. cd /d C:\users\public\desktop
复制代码
然后在使用
  1. for %%i in (123.* *456.* 789.*) do (
  2.     echo 可删除的: %%i
  3. )
复制代码
却可以循环123.* *.456.* 789.*全部文件
求大佬指教

回复 5# aloha20200628


    DIR命令我试过,能找到我需要的文件,就是使用for无法找到

TOP

回复 4# hztccy

再试试下一行代码的结果...
  1. cd /d c:\users & dir /b/s/a "123.*" "*456.*" "789.*"
复制代码

TOP

回复  hztccy

for %%i in (...*...?...) 这个句式仅匹配当前目录下的目标文件,而 123.* 文件在 C:\use ...
aloha20200628 发表于 2024-11-22 21:00



    奇怪,我也是试过使用/R参数,但是我在三台Windows10电脑分别测试,发现其中有一台电脑,依然是只能123.*后面的都不识别

TOP

本帖最后由 aloha20200628 于 2024-11-22 21:10 编辑

回复 1# hztccy

for %%i in (...*...?...) 这个句式仅匹配当前目录下的目标文件,而 123.* 文件在 C:\users 目录下,但 *456.* 789.* 文件却在 C:\users\public\desktop 这个目录下,因此才会导致一楼两段代码的不同结果...
以下代码会匹配出全部目标文件(全路径)
  1. @echo off
  2. CD /D C:\Users
  3. for /r %%i in (123.* *456.* 789.*) do (
  4.     echo 可删除的: %%i
  5. )
  6. pause
复制代码

TOP

是不是文件有隐藏属性?试一下  dir /b /a-d "C:\Users"
bat小白,请多指教!谢谢!

TOP

返回列表