批处理文件:for循环后删除文件夹

时间:2020-01-10 05:04:05

标签: for-loop batch-file delete-file

这就是我现在所拥有的。如果我运行此脚本,则循环永远不会结束并永远运行。 将文件移到kmz文件夹的文件夹后,我试图删除kmz文件夹中的文件夹;但是,它不会删除kmz文件夹内的文件夹。我认为这就是为什么我的批处理文件永远运行的原因。 有帮助吗?

setlocal enableextensions enabledelayedexpansion


:loop
IF EXIST D:\kmz\*.* (
    FOR /f "delims=" %%a IN ('dir /b /s /a-d "D:kmz\*.*" ') do (
        FOR %%b IN ("%%~dpa.") do (
            REN "%%a" "%%~nb.*"
            move %%b\* D:\renamed
            del %%b 
            goto loop2
            )
        )
)

:loop2
IF EXIST D:\renamed\*.* (
    for /R D:\renamed %%G in (*.*) do (
        ogr2ogr -f "ESRI Shapefile" "D:\shapefile\%%~nG_boundary.shp" "%%G"
        move %%G D:\Photos\%%~nG
        goto transfering 
        )
)

:transfering 
IF EXIST D:\shapefile\*.shp (
    for /R D:\shapefile %%K in (*.*) do (
        set "filename=%%~nK"
        set "first5=!filename:~0,5!"
        move %%K D:\Photos\!first5!
        echo !date!-!time! %%K is created >> D:\Photos\!first5!\log.txt
        )
) 

goto loop

这是我的第二次尝试:

setlocal enableextensions enabledelayedexpansion


:loop
FOR /f "delims=" %%a IN ('dir /b /s /a-d "D:kmz\*.*" ') do (
        FOR %%b IN ("%%~dpa.") do (
            IF EXIST %%a (
            REN "%%a" "%%~nb.*"
            move %%b\* D:\renamed
            rmdir %%~dpa
            goto loop2
            )
        )
)

:loop2
IF EXIST D:\renamed\*.* (
    for /R D:\renamed %%G in (*.*) do (
        ogr2ogr -f "ESRI Shapefile" "D:\shapefile\%%~nG_boundary.shp" "%%G"
        move %%G D:\Photos\%%~nG
        goto transfering 
        )
)

:transfering 
IF EXIST D:\shapefile\*.shp (
    for /R D:\shapefile %%K in (*.*) do (
        set "filename=%%~nK"
        set "first5=!filename:~0,5!"
        move %%K D:\Photos\!first5!
        echo !date!-!time! %%K is created >> D:\Photos\!first5!\log.txt
        )
) 

goto loop

我能够从D:\ kmz删除文件夹,但是循环不会停止。 我这个输出是原因...

C:\>FOR /F "delims=" %a IN ('dir /b /s /a-d "D:kmz\*.*" ') do (FOR %b IN ("%~dpa.") do (IF EXIST %a (
REN "%a" "%~nb.*"
 move %b\* D:\renamed
 rmdir %~dpa
 goto loop2
) ) )
File Not Found

1 个答案:

答案 0 :(得分:0)

要停止循环,请尝试将loop设置为一个值为1的变量,并对其进行编码,以使每次运行该命令时,它都会从循环中删除一个。然后说,如果循环变量等于0,请转到另一部分,该部分包含文件目录和delete命令。我希望这行得通。