2014-02-19 39 views
0

我是批处理脚本的新手。我要编写一个批处理脚本,它将搜索一个子目录,然后比较目录中存在的文件的扩展名。 例如,对于以下结构:编写批处理脚本以查找子目录

D:\Batch_script\unknown_dir_name\destiantion1\dummy.txt

我的脚本应该先找到目录destiantion1,然后,如果它存在,它应该寻找dummy.txt文件。

可能吗?任何人都可以请建议我一个方法来做到这一点。

感谢

回答

1
for /f "tokens=*" %%f in (
    'dir /ad /s /b "d:\Batch_script\destiantion1"' 
) do if exist "%%~f\dummy.txt" echo %%~f 

对于每个命名下d destiantion1目录:\ batch_script,如果它包含一个dummy.txt文件,回声安慰

编辑 - 适应评论

for /f "tokens=*" %%f in (
    'dir /ad /s /b "d:\Batch_script\destiantion1"' 
) do if exist "%%~f\dummy.txt" (
    dir /a-d /b "%%~f\dummy.txt" 2>nul | find "dummy.txt" > nul && echo %%~f 
) 

fordir命令在搜索时不区分大小写,因此请使用过滤器。如果找到字符串,则不会设置错误级别并执行&&之后的代码。

另一种方法是处理文件搜索的adecuated文件夹的完整列表/文件

for /f "delims=" %%f in (
    'dir /a-d /s /b "d:\batch_script\dummy.txt" ^| findstr /l /e /c:"\destiantion1\dummy.txt"' 
) do echo %%~dpf 
+0

由于它的工作很大。有没有什么方法可以用“if exists”命令检查区分大小写的文件?因为我的dummy.txt文件应该总是使用小写字母。 – user3327200

+0

非常感谢,我现在都准备好和脚本一起去了:) – user3327200