2015-09-07 72 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性能更好,但我更願意將重定向放在需要它的命令中,否則將無法檢測到任何其他錯誤消息。 –

相關問題