[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 文件夹里的所有图片生成一个html页,如何把图片的相对路径写入到html文件中

本帖最后由 zcg1123 于 2017-7-15 12:03 编辑

原本的BAT文件是:批处理将一个文件夹里的所有图片生成一个html页。
我把桌面上面的图片文件夹移动到E盘,打开“图片.html”文件就不显示图片了,也不能打开链接。
只因为批处理生成的HTML文件是绝对路径,把HTML文件中代码路径修改为a href="图片01.jpg",Img Src="图片01.jpg"这样的相对路径,就可以显示和打开链接了,
经常要把此文件夹发给公司其它同事,每个人放的位置不一样,打开就是一片空白。
每次增加或修改图片,我只能每生成一次HTML文件,就要打开HTML文件手动去修改里面的链接路径,实在太麻烦。
怎么修改BAT批处理文件,让生成的HTML文件中的路径直接是这样的相对路径?

下面是代码:批处理将一个文件夹里的所有图片生成一个html页代码:
——————————————————————————————————————————————————————
@echo off&SetLocal EnableDelayedExpansion
For /f "delims=" %%i in ('dir/b/on') do (Set a=%%~pi
Set a=!a:\= !)
For %%i in (%a%) do Set b=%%i
::获取文件夹名
Set n=0
(
Echo ^<Html^>
Echo ^<Title^>
Echo %b%
Echo ^</Title^>
Echo ^<Body^>
For /r %%i in (*.jpg *.bmp *.gif *.png) do (Echo ^<a href="%%i" target=_blank^> ^<Img Src="%%i" width="200" height="200"^>
Set n=1)
::将当前文件夹中所有的图片地址写入到html文件中。
Echo ^</Body^>
Echo ^</Html^>
)>"%b%.html"
If %n%==0 Msg * "当前文件夹中没有图片" & del %b%.html
If %n%==1 Start "" "%b%.html"
————————————————————————————————————————————————
上面是BAT批处理文件源代码,
桌面上“图片”文件夹放了4张图片,BAT文件也在该目录下,执行BAT文件,

生成的html文件代码如下:
————————————————————————————————————————————————
<Html>
<Title>
图片
</Title>
<Body>
<a href="d:\我的文档\桌面\图片\图片01.jpg" target=_blank> <Img Src="d:\我的文档\桌面\图片\图片01.jpg" width="200" height="200">
<a href="d:\我的文档\桌面\图片\图片02.jpg" target=_blank> <Img Src="d:\我的文档\桌面\图片\图片02.jpg" width="200" height="200">
<a href="d:\我的文档\桌面\图片\图片03.jpg" target=_blank> <Img Src="d:\我的文档\桌面\图片\图片03.jpg" width="200" height="200">
<a href="d:\我的文档\桌面\图片\图片04.jpg" target=_blank> <Img Src="d:\我的文档\桌面\图片\图片04.jpg" width="200" height="200">
</Body>
</Html>
————————————————————————————————————————————————————————————————————

上面的HTML代码不是我想要的,我想要的是如下相对路径的代码:
————————————————————————————————————————————————————————————————————
<Html>
<Title>
图片
</Title>
<Body>
<a href="图片01.jpg" target=_blank> <Img Src="图片01.jpg" width="200" height="200">
<a href="图片02.jpg" target=_blank> <Img Src="图片02.jpg" width="200" height="200">
<a href="图片03.jpg" target=_blank> <Img Src="图片03.jpg" width="200" height="200">
<a href="图片04.jpg" target=_blank> <Img Src="图片04.jpg" width="200" height="200">
</Body>
</Html>
————————————————————————————————————————————————————————————————————

原本的BAT文件是:批处理将一个文件夹里的所有图片生成一个html页。
我把桌面上面的图片文件夹移动到E盘,打开“图片.html”文件就不显示图片了,也不能打开链接。
只因为批处理生成的HTML文件是绝对路径,把HTML文件中代码路径修改为a href="图片01.jpg",Img Src="图片01.jpg"这样的相对路径,就可以显示和打开链接了,
经常要把此文件夹发给公司其它同事,每个人放的位置不一样,打开就是一片空白。
每次增加或修改图片,我只能每生成一次HTML文件,就要打开HTML文件手动去修改里面的链接路径,实在太麻烦。
怎么修改BAT批处理文件,让生成的HTML文件中的路径直接是这样的相对路径?

把上例的<a href="%%i" target=_blank^> ^<Img Src="%%i" width="200" height="200"^>里的%%i改为 %%:~ni。即可,参考 for /?
目的,学习批处理

TOP

本帖最后由 zcg1123 于 2017-7-15 12:06 编辑

回复 2# 3518228042

多谢楼上的回复!
空格是我复制代码的问题,好像不是空格的问题。
你的代码生成HTML文件后,还是和原来的一样,问题没有解决。
请哪位老师、师傅、大神、高手帮忙修改一下,拜谢!!!

TOP

  1. @echo off&SetLocal EnableDelayedExpansion
  2. For /f "delims=" %%i in ('dir/b/on') do (Set a=%%~pi
  3. Set a=!a:\= !)
  4. For %%i in (%a%) do Set b=%%i
  5. ::获取文件夹名
  6. Set n=0
  7. (
  8. Echo ^<Html^>
  9. Echo ^<Title^>
  10. Echo %b%
  11. Echo ^</Title^>
  12. Echo ^<Body^>
  13. For /r %%i in (*.jpg *.bmp *.gif *.png) do (Echo ^<a href="%%i" target=_blank^> ^<Img Src="%%i" width="200" height="200"^>
  14. Set n=1)
  15. ::将当前文件夹中所有的图片地址写入到html文件中。
  16. Echo ^</Body^>
  17. Echo ^</Html^>
  18. )>"%b%.html"
  19. If %n%==0 Msg * "当前文件夹中没有图片" & del %b%.html
  20. If %n%==1 Start "" "%b%.html"
复制代码
结果都写上面了,图片路径后面给回车换行了,链接就断了,把那个删除

TOP

返回列表