Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 循环批处理中不同文件夹中的文件_Loops_Batch File_Directory - Fatal编程技术网

Loops 循环批处理中不同文件夹中的文件

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;..

在.bat文件中,我有如下内容:

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。请参阅张贴的答案,以获取备选答案