对于循环返回错误的语法

时间:2014-03-05 21:13:05

标签: batch-file for-loop

我最近查看了这个问题的答案(https://stackoverflow.com/a/18017189/2371039)并基本上将其复制并粘贴到我自己的批处理文件中,但进行了一些编辑。当我运行它时,文件返回错误的语法,并通过一些调试,发现它挂在第一个for循环。我以前没有对批处理循环做过任何事情,因此,不知道它的正确语法。

CODE:

::@echo off
setlocal enabledelayedexpansion
echo setlocal
pause
cd /d "%CD%"
echo cd
pause
for %%a in (*-*.*) do (
    echo for1
    pause
    for /f "delims=-" %%b in ("%%a") do (
        set "f=%%b"
        if /i "%%~xa"==".pdf" (
            md "%CD%/pdf/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/pdf/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".png" (
            md "%CD%/images/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/images/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".jpg" (
            md "%CD%/images/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/images/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".jpeg" (
            md "%CD%/images/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/images/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".txt" (
            md "%CD%/txt/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/txt/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".html" (
            md "%CD%/html/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/html/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".gif" (
            md "%CD%/images/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/images/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".exe" (
            md "%CD%/exe/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/exe/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".xml" (
            md "%CD%/html/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/html/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".wav" (
            md "%CD%/videos/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/videos/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".mov" (
            md "%CD%/videos/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/videos/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".mp4" (
            md "%CD%/videos/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/videos/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".ogg" (
            md "%CD%/music/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/music/!f:~0,-1!" >nul
        ) else if /i "%%~xa"==".mp3" (
            md "%CD%/music/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/music/!f:~0,-1!" >nul
        ) else
            md "%CD%/other/!f:~0,-1!" 2>nul
            move "%%a" "%CD%/other/!f:~0,-1!" >nul
        )
    )
)

如果这是一个n00b的错误,请加入其中,请解释一下,这样我就不再是n00b了。

1 个答案:

答案 0 :(得分:1)

我会在最后ELSE添加一个左括号,当你试图关闭它时......

如果没有以下命令或代码块,则不允许使用ELSE。

...
   ) else (
       md "%CD%/other/!f:~0,-1!" 2>nul
       move "%%a" "%CD%/other/!f:~0,-1!" >nul
   )
...