Batch file 从子目录中提取所有.img文件

Batch file 从子目录中提取所有.img文件,batch-file,cmd,Batch File,Cmd,我有一个目录,其中包含一些名为*.data的子目录,其中包含一个名为Ratio.img的文件、一个名为Ratio.hdr的文件和一个目录vector_data 这是我的设置: 目录: 我想要一个命令行解决方案,从每个子目录中获取Ratio.img,将其重命名为不带.data的子目录的名称,并将其移动到目录本身 我尝试了一些东西来查找.img图像并移动它们,但我没有成功地将重命名包含到文件名中 # Unfortunately all those .img file are named Ratio,

我有一个目录,其中包含一些名为*.data的子目录,其中包含一个名为Ratio.img的文件、一个名为Ratio.hdr的文件和一个目录vector_data

这是我的设置: 目录:

我想要一个命令行解决方案,从每个子目录中获取Ratio.img,将其重命名为不带.data的子目录的名称,并将其移动到目录本身

我尝试了一些东西来查找.img图像并移动它们,但我没有成功地将重命名包含到文件名中

# Unfortunately all those .img file are named Ratio, so they ask me to overwrite, what I clearly do not want to.
FOR /R %G in ("*.img") DO Move "%G" "G:\GRD_TEst\Products"

#I tried Renaming the Ratio.img-files, since I think I could work with them even if they are named blah.data.img
FOR /D %G in ("*.data") DO Rename "G:\GRD_TEst\Products\"%G"\Ratio.img" "G:\GRD_TEst\Products\"%G"\"%G".img"


# I also tried some "nesting" of for loops, but this did not lead to the output I wanted, basically create the path to my Ratio.img-File

for /D %G in (.data) do 
    FOR /D %X in ("Ratio.img") DO echo %G\%X

我希望输出像这样 目录:


我可能已经找到了一个解决方案,因为我没有制作备份副本,所以我必须复制我的Ratio.img文件:

`for /D %%G in ("*.data") do (
    FOR /D %%I in (Ratio.img) DO Rename G:\GRD_TEst\Products\%%G\%%I %%G.img
    FOR /D %%H in (Ratio.hdr) DO Rename G:\GRD_TEst\Products\%%G\%%H %%G.hdr)`
这不起作用,它重命名了文件,但我不能以这种方式使用它们,它们不可导入到ArcMap中。移动将在第二步中完成


编辑:在重命名.hdr之后,我可以在ArcMap中导入数据。最后,我更新了上面的代码片段,以获得最终解决方案。

能否请您包含希望我们帮助您修复的代码。本网站不是免费的代码编写服务,也不提供参考资料的链接,供您开始编写自己的代码。如果你没有代码,我建议你尝试一下网站搜索工具,或者试试。@GerhardBarnard我在网上读了3年的东西,当我需要它的时候,我对CMD的东西真的是很陌生,但我会尝试给你们一些我做过的代码,但并没有达到我想要的:请把你尝试过的东西贴出来,这将有助于使问题至少在主题上。我添加了我迄今为止所做的事情,我尝试了很多,但没有任何结果,只有语法错误,但我无法提供它们,因为我丢失了概述。您可以在一个循环中完成这一切。。你也在做什么?from cmd将向您展示如何在变量上展开,例如%%~xH将只显示文件的扩展名。@GerhardBarnard我非常确定它可以在一个循环中完成,速度更快等等,但由于我对cmd不太擅长,而且对我来说效果很好,因此我不会在项目内部的这一最小步骤上花费太多时间!感谢您的帮助:
-ABC.img
-ABC.data/Ratio.hdr
    /vector_data
-DEF.img
-DEF.data/Ratio.hdr
    /vector_data
`for /D %%G in ("*.data") do (
    FOR /D %%I in (Ratio.img) DO Rename G:\GRD_TEst\Products\%%G\%%I %%G.img
    FOR /D %%H in (Ratio.hdr) DO Rename G:\GRD_TEst\Products\%%G\%%H %%G.hdr)`