1

我对以下批处理文件有疑问:它工作得很好,但我想知道以下是否可能:

有没有办法让它在几个目录中查找并输出该特定目录中的文件,然后继续下一个,直到它到达目录列表的末尾然后完成。

例如:

main dir  -subdir
          -subdir1
          -subdir2
          -ect.

我在 maindir 中启动批处理,它将列出该子目录中 outputfile.rss 中每个子目录的文件。所以它看起来像这样:

main dir  -subdir - outfile.rss (contains the list of files of this subdir)
          -subdir1- outfile.rss (contains the list of files of this subdir)
          -subdir2- outfile.rss (contains the list of files of this subdir) 
          -ect.

这是我想“扩展”的批处理文件。希望有人可以帮助我吗?

@ECHO OFF &SETLOCAL
SET "header1=<rss version="2.0" xmlns:jwplayer="http://rss.jwpcdn.com/">"
SET "header2=    <channel>"
SET "footer1=    </channel>"
SET "footer2=</rss>"

(
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(!header1!
ECHO(!header2!
ECHO(
ENDLOCAL
FOR %%a IN (*.flv *.mp4) DO (
    ECHO(    ^<item^>
    ECHO(        ^<title^> %%~na ^</title^>
    ECHO(        ^<jwplayer:source file="/temp/records/%%~nxa" /^>
    ECHO(    ^</item^>
)
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(
ECHO(!footer1!
ECHO(!footer2!
)>outfile.rss  

提前致谢。

4

2 回答 2

0

你可以尝试这样的事情:

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION


REM calculate the length of local path 
FOR /L %%n in (1 1 500) do if "!__cd__:~%%n,1!" neq "" set /a "len=%%n+1"

SET "header1=<rss version="2.0" xmlns:jwplayer="http://rss.jwpcdn.com/">"
SET "header2=    <channel>"
SET "footer1=    </channel>"
SET "footer2=</rss>"


(
    ECHO.!header1!
    ECHO.!header2!
    ECHO.

    FOR /R %%a IN (*.flv *.mp4) DO (
        SET "absPath=%%a"
        SET "relPath=!absPath:~%len%!"
        SET "webPath=!relPath:\=/!"
        ECHO.    ^<item^>
        ECHO.        ^<title^> %%~na ^</title^>
        ECHO.        ^<jwplayer:source file="/temp/records/!webPath!" /^>
        ECHO.    ^</item^>
    )
    ECHO. 
    ECHO.!footer1!
    ECHO.!footer2!
) & REM put "> file.rss" here if you want a file 

ENDLOCAL

您对在批处理脚本中有用的东西有点了解。使用真正的脚本语言(如 python、powershell 或 javascript)会更好。特别是如果您需要更多地扩展它。

于 2013-09-07T20:26:43.507 回答
0

看看这是否满足您的需求:

@echo off
 for /d /r %%a in (*) do (
    pushd "%%a"
       for %%b in ("%cd%") do call :rss "%%~nxa"
    popd
 )
goto :eof
:rss
@ECHO OFF &SETLOCAL
SET "header1=<rss version="2.0" xmlns:jwplayer="http://rss.jwpcdn.com/">"
SET "header2=    <channel>"
SET "footer1=    </channel>"
SET "footer2=</rss>"

(
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(!header1!
ECHO(!header2!
ECHO(
ENDLOCAL
FOR %%a IN (*.flv *.mp4) DO (
    ECHO(    ^<item^>
    ECHO(        ^<title^> %%~na ^</title^>
    ECHO(        ^<jwplayer:source file="/temp/records/%~1/%%~nxa" /^>
    ECHO(    ^</item^>
)
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO(
ECHO(!footer1!
ECHO(!footer2!
)>outfile.rss  
于 2013-09-07T22:31:30.677 回答