Directory Batch/CMD:查找每个文件夹文件meta.xml
我有一个包含以下内容的目录:Directory Batch/CMD:查找每个文件夹文件meta.xml,directory,batch-file,cmd,Directory,Batch File,Cmd,我有一个包含以下内容的目录: -directory -another directory -meta.xml -yet another directory -meta.xml ... 因此,它需要在每个目录“meta.xml”中单独查找(这样我就不必在代码中键入每个目录),我希望每个meta.xml文件都执行一个命令 是否有任何可能的方法可以做到这一点,并且可以安静地完成这一点,因为我所说的命令给出了meta.xml文件中的一行文本,我不想看到它在做什么,您会得到这样的结果: te
-directory
-another directory
-meta.xml
-yet another directory
-meta.xml
...
因此,它需要在每个目录“meta.xml”中单独查找(这样我就不必在代码中键入每个目录),我希望每个meta.xml文件都执行一个命令
是否有任何可能的方法可以做到这一点,并且可以安静地完成这一点,因为我所说的命令给出了meta.xml文件中的一行文本,我不想看到它在做什么,您会得到这样的结果:
text from meta file 1
text from meta file 2
text from meta file 3
而不是
meta.xml found
text from meta file 1
meta.xml found
text from meta file 2
meta.xml found
text from meta file 3
如果这还不清楚,我想我只是希望它安静地运行,好吗。(/Q也许吧?)
这是我刚才说的命令:
findstr "<name>" meta.xml >temp1.lis
FOR /F "tokens=2 delims=>" %%i in (temp1.lis) do @echo %%i > temp2.lis
FOR /F "tokens=1 delims=<" %%i in (temp2.lis) do @echo %%i > temp3.lis
谢谢
findstr /r /s ".*" meta.xml
将以以下形式提供当前目录及其所有子目录中每个meta.xml文件的每一行:
dir1\dir2\dir2\meta.xml: line is here.
如果您需要更复杂的东西,我建议您安装Cygwin或GNU工具,并使用bash shell或类似UNIX的实用程序,例如:
find . -name meta.xml -exec cat {} ';'
要查找所有meta.xml文件,请执行以下操作:
dir meta.xml /s
然后,您可以通过管道将输出传输到其他命令,如
dir meta.xml /s | someCommand
我不太清楚我是否明白你想要什么。您希望查找所有名为meta.xml的文件,但是您是希望搜索该文件中的内容,还是希望查看该文件中的完整内容?如果你想过滤掉所有关于找到的文件名的输出,你只对文件的内容感兴趣,对吗 我不确定是否可以使用cmd执行此操作,但如果您安装,则可以通过以下方式轻松执行此操作:
prompt>find top_level_directory -name meta.xml -print0 | xargs -0 grep -h "your search pattern"
搜索或
prompt>find top_level_directory -name meta.xml -print0 | xargs -0 cat
用于输出完整文件。好的,据我所知,这应该可以: findmeta.cmd
@echo off
for /f "delims=" %%f in ('dir /b /s meta.xml') do (
FOR /F "tokens=2 delims=>" %%i in ('findstr "<name>" %%f') do @echo %%i > temp2.lis
FOR /F "tokens=1 delims=<" %%i in (temp2.lis) do @echo %%i >> temp3.lis
)
@echo关闭
对于/f“delims=“%%f in('dir/b/s meta.xml')do(
对于/F“tokens=2 delims=>”%%i in('findstr”“%%F'),请执行@echo%%i>temp2.lis
对于/F"tokens=1 delims=第二个似乎很好,我如何用更多的代码行替换“SomeCommand”?不起作用,一直给我“FINDSTR:meta.xml not found”。我的意思是它应该在所有目录中查找它…您希望为每个meta.xml文件执行什么命令?如果您不知道确切的命令,那么您希望它执行什么o do?嗯。当我在其他地方尝试时,代码似乎运行良好。问题是我无法搜索子目录?基本上我想要的是让它通过子目录搜索,但现在不起作用。我喜欢第一个,但问题是我不想要每一行。有没有办法我可以使用自己的命令(参见我编辑的帖子)在findstr中?如果您不需要每一行,那么只需提供一个更具体的搜索词。这个>findstr/r/s“tokens-.delims=”meta如何。xml@YourComputerHelpZ.command.com/cmd.exe从旧的MSDOS时代以来已经走过了很长的路,但它仍然是bash(或ksh)的穷表亲格伦:我认为你把和findstr
搞混了。你写的东西没有多大意义。@YourComputerHelpZ或者如果你不想使用Cygwin,试试PowerShell。如果你不想使用cmd/bat脚本,就没有理由使用cmd/bat脚本我不想为10年以上的操作系统开发。我不想使用额外的命令行工具,因为这是公开的。好的,嗯…可以和我的命令结合使用吗?也许cygwin也可以实现我想要的目标?谢谢,我回家后会试试。我现在不在家。嗯,三个Snipet中哪一个不工作ing?你都试过了吗?另外,你能发布你想处理的xml的一部分吗,这样我们就可以更清楚地了解手头的任务了?我很高兴我能用标准的cmd.exe命令提供答案。我将回顾你的问题,我看到人们很快会建议PS/cygwin/python/VBS答案,尽管有可能的-dos解决方案。
@echo off
for /f "delims=" %%f in ('dir /b /s meta.xml') do (
FOR /F "tokens=2 delims=>" %%i in ('findstr "<name>" %%f') do @echo %%i > temp2.lis
FOR /F "tokens=1 delims=<" %%i in (temp2.lis) do @echo %%i >> temp3.lis
)
for /f "delims=" %%f in ('dir /b /s meta.xml') do (
FOR /F "tokens=2 delims=><" %%i in ('findstr "<name>" %%f') do (
@echo %%i >> temp3.lis
)
)
for /f "delims=" %%f in ('dir /b /s meta.xml') do FOR /F "tokens=2 delims=><" %%i in ('findstr "<name>" %%f') do @echo %%i >> temp3.lis
for /f "delims=" %%f in ('dir /b /s meta.xml') do FOR /F "tokens=3 delims=><" %%i in ('findstr "<name>" %%f') do @echo %%i >> temp3.lis