0

我想为 Windows 中的所有文件夹递归运行命令行实用程序。我尝试了以下方法,但没有成功。

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"
4

3 回答 3

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"
于 2013-05-31T08:28:33.143 回答
0

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

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

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

您是在向我们展示您认为有错的部分吗?

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

还是它没有给你你所期望的ECHO now in %%G

  • 也许如果您告诉我们您的期望和得到的结果,可能会更容易提供帮助。
于 2013-05-31T06:41:17.620 回答
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"
于 2013-05-31T14:43:19.030 回答