Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Directory Batch/CMD:查找每个文件夹文件meta.xml_Directory_Batch File_Cmd - Fatal编程技术网

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