0

我的文件结构和程序是这样的:http: //i.imgur.com/R7P7HQI.jpg

  • 我有一个名为“Project_ID”的文件夹。

  • 在该文件夹中,我有我的 html 文件和另一个文件夹,其中包含我的设计模板,名为 01.jpg、02.jpg、03.jpg 等等......

  • 在这些 html 文件中,我对每张照片进行预览,例如 01.html、02.html、03.html 等等...

  • 如果单击并打开 01.html,您会看到第一张图片 01.jpg。如果您单击该图像,它会将您发送到打开 02.jpg 的文件“02.html”中的同一文件夹,依此类推,直到您到达再次打开 01.html 的最后一个 html。

--------------------------------------------------……</p>

我想用批处理文件“自动化”的事情是:

每次我有一个新项目时,我都必须使用记事本进入每个 .html 文件,更改 Profile 中的值“Profile”,并使用我的初始文件夹的确切名称(Project_ID)。

然后,我必须将宽度(在我的示例 1920 中)和高度(在我的示例 2394 中)替换为图像文件夹中 01.jpg 的确切尺寸。

当然,我想让我的批处理从头开始使用记事本创建所有这些 .html 文件,方法是首先查看“初始文件夹的名称 (Project_ID)”、“图像文件夹中我的 .jpg 文件的数量”和然后创建我在开始时解释的功能所需的确切数量的 html 文件。我想仅使用批处理文件会有点困难。

任何人都可以帮忙吗?

4

3 回答 3

0

这样做很痛苦。考虑其他方法:

  • 编写一个 HTML 页面,使用 javascript 加载和显示不同的图像。然后,除了项目名称之外,您无需更改任何内容。
  • 编写一个返回不同图像的 PHP 脚本,然后像这样调用它:display.php?project=MyProject&img=1
  • 至少,使用一些合理的东西,比如 python。
于 2013-03-21T13:19:52.337 回答
0

如果你想做的是创建一个照片库,我强烈建议你看看jAlbum。只需单击几下,它就会生成您的网络相册,拥有大量社区开发的模板,您甚至可以使用它生成幻灯片。如果防止右键单击保存图像是您的主要目标,我认为有些模板可以使用 Flash Player 显示图像。

查看一些样本专辑,看看你的想法。


如果您坚持使用自己的模板,请查看使用GnuWin32 sed进行内联流编辑。您可以使用正则表达式在所有 html 页面中更改您的项目,如下所示:

sed -i -r -e "s/Profile/Project_ID/g" *.html

并对您的图像宽度进行类似的修改。

但是, GnuWin32的内联编辑在使用开关sed时往往会留下带有随机生成名称的垃圾临时文件。-i使用for循环并重定向这样的输出可能会更好sed

for %%I in (*.html) do (
    sed -r -e "s/Profile/Project_ID/g" %%I >%%I.temp
    move /y %%I.temp %%I
)
于 2013-03-21T13:54:50.610 回答
0
@ECHO OFF
SETLOCAL
:: Get directory from cmdline
SET sourcedir=%~1
IF NOT DEFINED sourcedir ECHO Require source directory&GOTO :EOF 
IF NOT exist "%sourcedir%\*.jpg" ECHO No JPGs found IN %sourcedir%&GOTO :EOF
::
:: get name of project (last element in path)
::
FOR %%i IN ("%~1") DO SET project=%%~ni
ECHO project is %project%
:: Create subdir for HTMLs
SET "newhtmls=%sourcedir%\newhtmls"
MD "%newhtmls%" 2>NUL
::
:: %2 is the name of a file containing .jpg names in the order
:: in which they are to appear. 
::
:: If %2 is missing, create a list file
SET imgseqlist=%2
IF DEFINED imgseqlist GOTO haveseq
SET imgseqlist=%temp%\htmlfilelist.txt
SET dellist="%imgseqlist%"
DIR /b /a-d /ON "%sourcedir%\*.jpg" >"%imgseqlist%"
:haveseq
::
:: Build file of image details
:: I use IRFANVIEW
::
SET imgdetails=%temp%\imagedetails.txt
SET dellist=%dellist% "%imgdetails%"
"C:\Program Files (x86)\irfanview\i_view32.exe" "%sourcedir%\*.jpg" /info="%imgdetails%"
::
:: Now let's process
::
(SET firstimg=)
FOR /f "usebackqdelims=" %%i IN ("%imgseqlist%") DO (
IF DEFINED firstimg (SET nextimg=%%i&CALL :generate) ELSE (SET firstimg=%%i)
(SET currimg=%%i)
)
:: Do the last one...
SET nextimg=%firstimg%
CALL :generate

:: And finally delete the tempfile
DEL %dellist%

GOTO :EOF 

:generate
:: output filename=current imagename -last 4 chars (.jpg)
SET outfile=%currimg:~0,-4%.html
SET nexthtml=%nextimg:~0,-4%.html
::
:: Look up the details of your image.
:: using IRFANVIEW format
::
(SET setdetails=)
FOR /f "usebackq tokens=1,2,4,6" %%d IN ("%imgdetails%") DO (
IF DEFINED setdetails IF "%%e"=="dimensions" (SET width=%%f&SET height=%%g&SET setdetails=)
IF /i %%d==[%nextimg%] SET setdetails=Y
)
:: I'd have filled out these details if you'd posted them
:: rather than just a picture :(
>%newhtmls%\%outfile% (
ECHO ^<!DOCTYPE...transitional.dtd"^>
ECHO ^<html...xthml"^>
ECHO ^<head^>
ECHO ^<meta...-8" /^>
ECHO ^<title^>%project^</title^>
ECHO ^<...and so ON...^>
ECHO         background-image:url(images/%currimg%^);
ECHO ^<...and so ON...^>
ECHO ^</head^>
ECHO.
ECHO ^<body^>
ECHO ^<a href="%nexthtml%"^>^<img src="images/blank.gif" width="%width%" height="%height%" /^>^</a^>
ECHO ^</body^>
ECHO ^</html^>
)
GOTO :eof
于 2013-03-21T15:47:53.253 回答