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

回复 4# hztccy

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

TOP

本帖最后由 aloha20200628 于 2024-11-24 17:53 编辑

回复 6# hztccy

可以认为 for /f ... ('...') 是一个可获取返回值的命令行接口,调用系统内置命令或外部执行程序就是了...
  1. @echo off & cd /d c:\users
  2. for /f "delims=" %%v in ('dir /b/s/a "123.*" "*456.*" "789.*" ') do echo,%%v
  3. pause&exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2024-11-25 16:51 编辑

回复 10# hztccy

回到一楼的问题报告(假定没有隐藏文件的问题)》先用以下代码
  1. cd /d "c:\users" & for %%i in (123.* *456.* 789.*) do echo %%i
复制代码
不用 /r 可以搜索到 123.* 文件,但搜索不到 *456.* 789.* 文件,改用以下代码
  1. cd /d "c:\users\public\desktop" & for %%i in (123.* *456.* 789.*) do echo %%i
复制代码
不用 /r 可以搜索到 123.* *456.* 789.* 文件

      证明一: c:\user 目录和 c:\users\public\desktop 目录中均有 123.* 文件,虽不在同一位置
      证明二: c:\user 目录中没有 *456.* 789.* 文件

楼主同意或可确认以上两个证明结论吗?

TOP

本帖最后由 aloha20200628 于 2024-11-25 20:22 编辑

回复 13# hztccy

这次先回到4楼,楼主确认用以下代码
  1. cd /d c:\users & for /r %%i in (123.* *456.* 789.*) do echo %%i
复制代码
在3台电脑中的2台已测试通过,只有1台未能搜索到 *456.* 789.* 文件,如此已经证明调用 for /r ... 句式用法没有问题,是可以递归搜索到当前目录及其各子目录中的目标文件,至于 ‘搜索未果’ 的那台电脑实况是因隐藏文件所致,还是其他... 就另当别论了

TOP

本帖最后由 aloha20200628 于 2024-11-27 12:11 编辑

回复 18# hztccy

好吧,再跟楼主最后来一道逻辑排查》就拿有问题的那台电脑作个测试,先克隆 与无问题电脑完全相同 的目录结构 c:\users\public\desktop 和其中的文件 123.* *456.* 789.* 文件,再用以下代码(存为 test.bat 或直接在命令行运行)重新测试看其运行结果,如果与前两台电脑一样可以顺利通过,万事大吉了,否则就只能拷问这台问题电脑本身的系统或硬件了...
  1. @cd /d "c:\users" && (for /r %%i in (123.* *456.* 789.*) do @echo,%%i) & pause
复制代码

TOP

本帖最后由 aloha20200628 于 2024-11-29 12:34 编辑

回复 1# hztccy

在win8.1简中系统cmd命令行测试结果如下》
c:\users\public\desktop 被系统默认设置为只读+隐藏目录
其中的被隐藏文件和非隐藏文件均可用 cd /d "c:\users" & dir /b/s/a-d ... 搜索到
其中的非隐藏文件依然可被 cd /d "c:\users" & for /r %f in ... 搜索到

TOP

返回列表