For loop 批处理文件:在for循环之后删除文件夹
这就是我现在拥有的。如果我运行这个脚本,循环将永远不会结束并永远运行。 在移动kmz文件夹中的文件后,我试图删除kmz文件夹中的一个文件夹;但是,它不会删除kmz文件夹中的文件夹。我想这就是我的批处理文件永远运行的原因。 有什么帮助吗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\*
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输出上会一直显示“找不到文件”输出。