Loops 循环批处理中不同文件夹中的文件
在.bat文件中,我有如下内容:Loops 循环批处理中不同文件夹中的文件,loops,batch-file,directory,Loops,Batch File,Directory,在.bat文件中,我有如下内容: set Files="..\DataSet\*.shp" for /r %%i in (%Files%) do ( echo Preparing table %%i REM other commands ) 这使我能够对“%Files%”中设置的文件夹中每个扩展名为.shp的文件执行操作 问题是这是一个单独的文件夹。我想在相同的变量中定义不同的文件夹,并循环其中的所有文件。差不多 set Files="..\DataSet1\*.shp;..
set Files="..\DataSet\*.shp"
for /r %%i in (%Files%) do (
echo Preparing table %%i
REM other commands
)
这使我能够对“%Files%”中设置的文件夹中每个扩展名为.shp的文件执行操作
问题是这是一个单独的文件夹。我想在相同的变量中定义不同的文件夹,并循环其中的所有文件。差不多
set Files="..\DataSet1\*.shp;..\DataSet2\*.shp;..\DataSet3\*.shp"
for /r %%i in (%Files%) do (
echo Preparing table %%i
REM other commands
)
这样,我应该能够处理%Files%变量中定义的所有文件夹中存在的每个.shp文件。如何更改代码以循环变量中定义的所有文件夹中具有特定扩展名的所有文件?@echo off
setlocal enableextensions disabledelayedexpansion
设置文件夹=..\DataSet1..\DataSet2..\DataSet3
集合扩展=.shp
对于%%f在%folders中的%do对于%%x在%extensions中的%do pushd%%~ff&&
对于在*%%x do中的/r%%i
echo准备表%%i
雷姆。。。。。
邻苯二胺
由于无法将for命令正在迭代的文件夹包含到内部for命令的/r子句中,因此前面的代码将当前active directory更改为要迭代的文件夹
如果更改当前active directory有问题,可以将文件迭代移动到子例程
@回音
setlocal enableextensions disabledelayedexpansion
设置文件夹=..\DataSet1..\DataSet2..\DataSet3
集合扩展=.shp
对于%f文件夹中的%%do%x扩展%do
调用:进程%%~ff%%~x
后藤:eof
:process folderBeingProcessed ExtensionProcess
对于/r%~1%%i in*%~2 do
echo准备表%%i
雷姆。。。。。
后藤:eof
set Files=..\DataSet1\*.shp..\DataSet2\*.shp..\DataSet3\*.shp它似乎不起作用。我没有进入循环。对不起,我错过了/r。请参阅张贴的答案,以获取备选答案