【问题标题】:For loop returning incorrect syntaxFor 循环返回不正确的语法
【发布时间】:2014-03-05 21:13:04
【问题描述】:

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

代码:

::@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 了。

【问题讨论】:

    标签: batch-file for-loop


    【解决方案1】:

    我会在最后一个 ELSE 中添加一个左括号,因为您尝试关闭它...

    并且不允许在没有以下命令或代码块的情况下使用 ELSE。

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

    【讨论】:

    • 多亏了你,我现在有了批处理文件的工作和排序文件。这只是节省了我几个小时的工作。现在只有当 AI 能够读懂我的想法来决定要保留哪些文件时……xD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多