Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 批处理文件:在for循环之后删除文件夹_For Loop_Batch File_Delete File - Fatal编程技术网

For loop 批处理文件:在for循环之后删除文件夹

For loop 批处理文件:在for循环之后删除文件夹,for-loop,batch-file,delete-file,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\*

这就是我现在拥有的。如果我运行这个脚本,循环将永远不会结束并永远运行。 在移动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

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

你说的循环不会停止是什么意思。你知道你已经在底部写了
goto-loop
,所以一旦你的脚本结束,它就会重新开始,不是吗?顺便说一句,你在for-loop命令的路径中缺少一个反斜杠,
D:kmz
应该是
D:\kmz
。(您甚至在将其复制到底部示例时重复了输入错误!)我希望在D:\kmz文件夹中有任何文件夹时运行此脚本。当没有文件夹时,我希望此脚本等待新文件夹进入此D:\kmz文件夹。但现在,当D:\kmz中没有更多的文件夹时,cmd输出上会一直显示“找不到文件”输出。