我正在尝试为Windows命令行编写一个批处理文件,将0的值转换为1.我可以轻松更改数字,但我正在努力处理批处理文件的过程。我希望批处理文件搜索3度的文件夹以查找要处理的图像。到目前为止我有...... 更新:问题似乎已经解决。但是作为参考,批处理文件似乎没有工作,没有错误消息,只是没有输出。
for %%y in (D:\Data\imageA\20*) do (
cd %%y
for %%m in (\%%y\*) do (
cd %%m
for %%d in (\%%m\*) do (
cd %%d
for %%f in (imageA_*_raster) do replacetool %%f %%f_new 0 1
cd ..
)
cd ..
)
cd ..
)
答案 0 :(得分:0)
for /D
。"D:\Data\imageA\20*"
。使用~
变量引用的for
修饰符可避免双引号。cd
命令,改为使用绝对路径,应用~F
修饰符,例如for /D %%m in ("%%~Fy\*") do ( ... )
。replacetool
需要此类路径),请使用pushd "%%~y"
代替cd %%y
和popd
代替cd ..
,并将(\%%y\*)
更改为("*")
。以下是使用绝对路径的固定代码:
for /D %%y in ("D:\Data\imageA\20*") do (
for /D %%m in ("%%~Fy\*") do (
for /D %%d in ("%%~Fm\*") do (
for %%f in ("%%~Fd\imageA_*_raster") do replacetool "%%~Ff" "%%~Ff_new" 0 1
)
)
)
以下是使用相对路径的代码:
for /D %%y in ("D:\Data\imageA\20*") do (
pushd "%%~y"
for /D %%m in ("*") do (
pushd "%%~m"
for /D %%d in ("*") do (
pushd "%%~d"
for %%f in ("imageA_*_raster") do replacetool "%%~f" "%%~f_new" 0 1
popd
)
popd
)
popd
)