我以前从未写过BAT文件,但是我想做以下事情。
在共享的网络驱动器上,我们具有文件/文件夹结构。我希望我的同事能够双击BAT文件。然后,BAT文件应生成这些文件的HTML索引以及链接,每个文件夹和子文件夹的头(不超过三个级别)。
我想我已经非常接近谷歌搜索和复制代码了,但是我被卡在了标题部分。
setlocal EnableDelayedExpansion
pushd %~dp0
for /L %%n in (1 1 500) do (
if "!__cd__:~%%n,1!" neq "" set /a "len=%%n+1"
)
for /r . %%g in (*) do (
setlocal EnableDelayedExpansion
set "absPath=%%g"
set "relPath=!absPath:~%len%!"
for %%F in ("!absPath!") do set "var=%%~dpF"
[MISSING CODE HERE]
echo "<a href='http://linkhere.com/!relPath!'>%%~ng</a>" >>output.txt
endlocal
)
echo %~dp0
popd
pause
可能有点混乱,因为我不确定自己在做什么。该文件将装入驱动器,然后循环浏览所有文件夹并将它们列出为链接。但是,每次循环到达新文件夹或子文件夹时,我都需要添加标题。该标头应为HTML,因此我可以添加诸如展开,折叠和格式化之类的功能。
我已经尝试过在这个大致方向上进行尝试
for /f "tokens=1,2,3,4 delims=\" %%a in ("!relPath!") do set a=%%a&set b=%%b&set c=%%c&set d=%%d
set "fname=!d!" & set "fone=!a!" & set "ftwo=!b!" & set "fthree=!c!" & set "mainFolder=!a!"
IF [!fname!] == [] (set "fname=!c!" & set "fone=!a!" & set "ftwo=!b!" & set "fthree=")
IF [!fname!] == [] (set "fname=!b!" & set "fone=!a!" & set "ftwo=" & set "fthree=")
IF [!fname!] == [] (set "fname=!a!" & set "fone=" & set "ftwo=" & set "fthree=" & set "mainFolder=")
这会将每个文件夹和文件名设置为一些变量。每当这些变量之一发生更改时,我都希望使用它来回显标头,但是我似乎无法解决这个问题。
也许我完全走错了路,但是我很高兴听到应该怎么做。
提前致谢。
编辑> Foxidrive建议我添加文件夹结构和输出示例。
上面的屏幕截图演示了文件夹结构。BAT文件将位于顶部文件夹(称为Standaard formulieren)中。
输出应为此伪HTML形式
<h2 class='header' onClick='showHide(1)'>ABU</h2>
<div id='itemlist1' class='itemlist'>
<ul>
<li><a href='http://link-to-file.com/ABU/filename.doc'>Filename</a></li>
<li><a href='http://link-to-file.com/ABU/filename%202.doc'>Filename 2</a></li>
</ul>
</div>
[etc...]
<h2 class='header' onClick='showHide(9)'>Personeelszaken</h2>
<div id='itemlist9' class='itemlist'>
<h3 class='subheader' onClick='showHide(10)'>Algemeen</h2>
<div id='itemlist10' class='subitemlist'>
<ul>
<li><a href='http://link-to-file.com/Personeelszaken/Algemeen/filename.doc'>Filename</a></li>
<li><a href='http://link-to-file.com/Personeelszaken/Algemeen/filename%202.doc'>Filename 2</a></li>
</ul>
</div>
</div>
[etc...]
再现HTML不是我的专长,但这应该会创建各种HTML,其中包含足够的信息以帮助您前进-我希望如此。
编辑:递归包括子目录的完整列表,更正了相对路径
@echo off
setlocal enabledelayedexpansion
set "basefolder=d:\Standaard formulieren"
pushd "%basefolder%"
(
for /d /r %%a in (*) do (
pushd "%%a"
echo going into "%%a"
for /r %%b in (*) do (
set "relfolder=%%a"
set "relfolder=!relfolder:%basefolder%\=!"
set "relfolder=!relfolder:\=/!"
set "filename=%%~nb"
set "filename=!filename: =%%20!"
echo ^<li^>^<a href="http://link-to-file.com/!relfolder!/!filename!%%~xb"^>%%~nb^</a^>^</li^>
)
popd
echo leaving "%%a"
)
)>"file.html"
echo done
pause
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句