批处理文件:For Loop未在多个嵌套循环中运行

时间:2017-12-01 20:16:29

标签: batch-file

我正在尝试查找具有特定文件扩展名的目录中的所有文件。这是我一直在测试的代码:

@echo off
SETLOCAL enabledelayedexpansion

REM For each line in the specified file
for /f "tokens=1" %%a in (%1.txt) do (

  REM Get the string of letters before the first number appears
  for /f "tokens=1 delims=0123456789" %%G in ("%%a") do (

    REM Determine if a file of the desired type is in the directory:
    if EXIST C:\Users\User1\%%G\%%a\Folder1\*.txt (
        echo file present

        REM Search through the directory for all files with that extension and list them
        for /r C:\Users\User1\%%G\%%a\Folder1\ %%i in (*.txt) do (
            echo %%i  ******<---This is the loop that isn't happening**
        )
     )
  echo.
  )
)

它按预期运行并回送&#34;文件存在&#34;当有文件时,但不列出所有文件。当我在该循环中放置一个空白回音时,它没有这样做,所以不知道循环没有运行,我不知道为什么。

我在另一个批处理文件中的循环完全相同,工作正常。我只是想尝试将其用于不同的目的,我无法弄清楚它为什么没有运行。非常感谢任何见解!

1 个答案:

答案 0 :(得分:1)

啊 - 旧的for /r with variable root陷阱

    pushd C:\Users\User1\%%G\%%a\Folder1
    for /r  %%i in (*.txt) do (
        echo %%i
    )
    popd

应该修复它。