如何在名称中使用点和空格循环目录?

时间:2014-11-06 09:17:54

标签: batch-file cmd

我有一个目录,其中包含一些具有特定模式的其他目录。所有子目录都以序号和点和空格开头。然后是字符串B8Y,它总是相等的,然后是另一个随机数。这是一个示例文件夹结构:

1. B8Y000037938
2. B8Y000044394
3. B8Y000069434
4. B8Y000078238
5. B8Y000094627

现在我想循环遍历那些目录,调用另一个脚本。我将此代码用于任务:

for /d %%t in (%MAIN_FOLDER%\*B8Y*) do (
    echo "Processing %%~nt"

    if "%~2"=="" (
        call %PATH_TO_MY_SCRIPT% %%~ft
    ) else (
        call %PATH_TO_MY_SCRIPT% %%~ft %2
    )
)

如果我没有将第二个参数传递给脚本,我希望输出如下:

Processing 1. B8Y000037938

而是输出

Processing 1

并使用之前未设置的第二个参数调用第二个脚本,现在为B8Y000037938

当我用.<space>替换-时,一切都按预期运行,所以我认为.<space>导致问题。但我不想手动甚至重命名所有文件夹 如果它可以自动完成,我宁愿不更改文件夹名称。有人知道,如何完成这项任务?

1 个答案:

答案 0 :(得分:0)

尝试使用%%~nxt代替%%~nt

~nt表示t的名称 ~nxt表示命名为扩展名 - .whatever是扩展名...