批处理文件以递归方式运行

时间:2013-05-31 06:17:05

标签: windows file batch-file

我想以递归方式为所有文件夹运行命令行实用程序 在窗户。我试过以下,但没有成功。

FOR /R "C:\AMDB\30-Apr-2013\Input\" %%G in (.) DO (

shp2sdo.exe %%~ni %%~ni -g geometry -d -x (-180,180) -y (-90,90) -s 8307 -t 0.5 -v

Pushd %%G
Echo now in %%G
Popd )
Echo "back home"

3 个答案:

答案 0 :(得分:1)

试试这个:

@echo off &setlocal
FOR /R /D "C:\AMDB\30-Apr-2013\Input" %%G in (*) DO (
    Pushd "%%G"
    shp2sdo.exe "%%~ni" "%%~ni" -g geometry -d -x (-180,180) -y (-90,90) -s 8307 -t 0.5 -v
    Echo now in %%G
    Popd 
)
Echo "back home"

答案 1 :(得分:0)

我们不知道“成功”是什么意思。我们可以得出结论,它没有按照你的期望做,否则你不会问这个问题。

现在 - 问题是它没有在“所有文件夹”中运行您的实用程序吗?

  • 您只是要求它在"C:\AMDB\30-Apr-2013\Input\"中运行 该子树中的目录。

您是否向我们展示了您认为有错的部分?

  • 也许shp2sdo.exe %%~nG而不是shp2sdo.exe %%~ni 为你做得更好

或者,当你ECHO now in %%G时,它没有给你你期望的东西吗?

  • 也许如果你告诉我们你的期望和你得到的可能 更容易提供帮助。

答案 2 :(得分:0)

您的代码未执行的原因是SHP2SDO.EXE参数中的)字符过早关闭了FOR DO循环。这些括号需要转义:

FOR /R "C:\AMDB\30-Apr-2013\Input\" %%G in (.) DO (

  shp2sdo.exe %%~ni %%~ni -g geometry -d -x (-180,180^) -y (-90,90^) -s 8307 -t 0.5 -v

  Pushd %%G
  Echo now in %%G
  Popd
)
Echo "back home"