1

我正在尝试进行简单的批处理以在文件夹中搜索包含用户提示名称的文件夹,如果找到该文件夹​​,它将询问是否应将文件夹复制到预定义的位置。当我在 cmd 中单独键入这些行时,它们工作正常,但是当我尝试将其保存在批处理文件中并运行它时,它会在 SET 之后以某种方式关闭 for do 中的某个位置,所以我怀疑它有什么要我的 FOR 在 Notepad++ 中如何格式化?

:START
    set /p nw=Please enter the search string: 

    FOR /f "tokens=*" %%i IN ('dir /a:d-s-h /b ^| findstr /i /m "%nw%"') do (
        echo found %%i &&echo.
        set /p cflag=Would you like to copy this folder over? Press 'y' and enter: 
        if %cflag%==y xcopy "%%i" "%sci%" /e
    )

set /p rflag=Search for another folder? Press 'y' and enter: 
if %rflag%==y goto START

这将在 XP 上运行。

谢谢。

4

1 回答 1

1

跟notepad++无关,关键字是延迟扩展。

%cflag% 将在解析 for 块时扩展,然后执行块中的任何行。
因此它仍然是空的,并且它扩展为空。
然后 if 子句的语法无效。

但是您可以通过延迟扩展来解决它。
只需将其放在批次的开头即可。

Setlocal EnableDelayedExpansion

然后扩展你的变量

!cflag!
于 2012-10-25T20:27:48.493 回答