2015-09-07 74 views
1

我希望批处理脚本在所有子文件夹中找到第一个电影文件(首先我的意思是按字母顺序排列)并创建一个具有相同名称的txt文件。我得到所有包含文件的文件夹。与第一for循环,但第二个似乎并不如预期 电影格式的工作:WMV MKV MP4 AVI在每个子文件夹中查找第一个电影文件并创建同名的txt文件

@echo off 
set CurDir=%CD% 
for /f "tokens=*" %%G in ('dir /b /s /a:d %CurDir%') do (
    For /f "tokens=*" %%H in ('dir /A:-D "%%G"') do (
     echo %%H 
    ) 
) 
echo %CurDir% 
pause 

回答

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 
    set "curdir=%CD%" 

    for /r "%curdir%" /d %%d in (*) do (
     pushd "%%~fd" && (
      set "first=1" 
      for /f "delims=" %%a in (' 
       dir /b /a-d /on *.wmv *.mkv *.mp4 *.avi 2^>nul 
      ') do if defined first (
       set "first=" 
       type nul > "%%~nxa.txt" 
      ) 
      popd 
     ) 
    ) 

对于在结构中的每个文件夹,更改为文件夹,每个文件在列表中,如果它是文件夹中的第一个,则使用找到的文件的名称和扩展名生成txt文件。

+0

感谢这个工程,但我仍然得到了很多“文件未找到”。也许这是我由于亚洲人物?据我所知它仍然会生成文本文件 – Hazmat

+0

我发现如果目录中没有电影文件,则会导致脚本生成的“文件未找到”错误信息。有没有办法解决它? – Hazmat

+0

@Hazmat,纠正错误。虽然将完整的'for' stderr流重定向到nul性能更好,但我更愿意将重定向放在需要它的命令中,否则将无法检测到任何其他错误消息。 –

相关问题