【问题标题】:Find first Movie file in every subfolder and create txt file with same name在每个子文件夹中查找第一个电影文件并创建具有相同名称的 txt 文件
【发布时间】:2015-09-07 16:50:46
【问题描述】:

我希望批处理脚本在所有子文件夹中找到第一个电影文件(第一个我的意思是按字母顺序排列)并创建一个同名的 txt 文件。我得到了所有包含文件的文件夹。使用第一个 for 循环,但第二个似乎没有按预期工作 影片格式:wmv mkv mp4 avi

@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

【问题讨论】:

    标签: loops batch-file


    【解决方案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 文件。

    【讨论】:

    • 感谢这项工作,但我仍然得到很多“找不到文件”。也许这是因为亚洲字符?据我所知,它仍然会生成文本文件
    • 我发现您的脚本生成的“找不到文件”错误消息是由于目录没有电影文件引起的。有办法解决吗?
    • @Hazmat,已纠正错误。虽然将完整的for stderr 流重定向到 nul 性能更好,但我更喜欢将重定向放在需要它的命令中,否则无法检测到任何其他错误消息。
    • 感谢您的帮助,我尝试将 de nul 添加到与您相同的位置,但没有成功,因为我没有 ^,这是我的猜测
    • @Hazmat,>是一个特殊字符,不能被主批处理解析器解释,而是由for /f内部启动的cmd实例解释,所以需要转义它。 ^的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2023-02-08
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多