HTML 일괄 생성 프로그램 문의

세벌의 이미지

이미지 파일들이 여러 개 있습니다.
0101.jpg
0102.jpg
0105.jpg
0115.jpg
0120.jpg
....
이런식으로 형식은 네자리 숫자.jpg 형식이고 번호는 연속되어 있지는 않습니다.
수작업으로 .html 하나씩 만들기 싫어서 아래와 같이 C 프로그램을 하나 만들었습니다.

f10.c

#include <stdio.h>
#include <string.h>
int main(int argc, char**argv)
{
  const char*sPre= "이전";
  const char*sNext="다음";
  FILE*fp;
  char pre[128], me[128], next[128];
  char prehtm[128], mehtm[128], nexthtm[128];
  int i;
 
  for(i=2; i<argc-1; i++){
    strcpy(pre, argv[i-1]);
    sprintf(prehtm, "%s.html",pre);
    strcpy(me, argv[i]);
    sprintf(mehtm, "%s.html",me);
    strcpy(next, argv[i+1]);
    sprintf(nexthtm, "%s.html",next);
    fp=fopen(mehtm, "w");
    fprintf(fp, 
    "<html>\n"
    "<head>\n"
    "<title>%s</title>\n"
    "</head>\n"
    "<body>\n"
    "<p>\n"
    "<a href=\"%s\">%s</a> <a href=\"%s\">%s</a>\n"
    "</p><p>\n"
    "<img src=\"%s.jpg\" />\n"
    "</p><p>\n"
    "2010\n"
    "</p>\n"
    "</body>\n"
    "<html>\n",
    me, nexthtm, sNext, prehtm, sPre, me
    );
    fclose(fp);
  }
  return 0;
}

이렇게 프로그램 만들어서 실행시킬 때는
./f10 0101 0102 0105
이런 식으로 하고 있는데 실행시킬 때 매개변수를 몇십 몇백 개씩 입력하는 것도 꽤 손이 많이 가네요.

위에서 처럼 매개변수를 입력하지 않고 한 디렉토리 안의 .jpg 파일을 프로그램에서 일괄적으로 읽어서 html 파일을 생성하려고 하는데 잘 안되네요.... 도움 부탁드려요.

aero의 이미지

약간 더 간단하게 수정

#!/usr/bin/env perl
use strict;
use warnings;
 
my @names = map { s/\..*?$//; $_ } glob('*.jpg');
 
my $cnt = 0;
foreach my $name (@names) {
    my $prev_link = ( $cnt == 0       ? '' : '<a href="'.$names[$cnt-1].'.html">이전</a>' );
    my $next_link = ( $cnt == $#names ? '' : '<a href="'. $names[$cnt+1] .'.html">다음</a>' );
 
    $cnt++;
 
    open my $fh, '>', "$name.html" or die $!;
    print {$fh} << "HTML";
<html>
<head>
<title>$name</title>
</head>
<body>
<p>
$prev_link $next_link
</p><p>
<img src="$name.jpg" />
</p><p>
2010
</p>
</body>
<html>
 
HTML
 
}

실행시키면 현재 디렉토리의 모든 jpg파일에 대해서 html파일을 만듭니다.
( 알아서 첫번째 파일은 다음링크만, 마지막 파일은 이전링크만 넣어줌, 나머지는 전/후 링크 모두 )

bushi의 이미지

#!/usr/bin/env bash
 
names=$(echo *.jpg)
names=(${names//.jpg/})
 
cnt=0
let end=${#names[*]}-1
for name in ${names[*]}
do
        [ ${cnt} -eq 0 ] \
                && prev_link="" \
                || prev_link="<a href=\"${names[((cnt-1))]}.html\">이전</a>"
        [ ${cnt} -eq ${end} ] \
                && next_link="" \
                || next_link="<a href=\"${names[((cnt+1))]}.html\">다음</a>"
 
        ((cnt++))
 
        cat > "${name}.html" << HTML || exit $?
<html>
<head>
<title>${name}</title>
</head>
<body>
<p>
${prev_link}${next_link}
</p><p>
<img src="${name}.jpg" />
</p><p>
2010
</p>
</body>
</html>
HTML
 
done
aero님의 perl 코드와 동작은 같습니다.

OTL

jg의 이미지

작성하신 코드 + perl
작성하신 코드는 항상 이전,다음이 존재하므로 환형으로 연결할 수 밖에 없겠네요.
즉, 처음 파일의 이전 파일은 맨 마지막 파일이 됩니다.
마지막 파일의 다음 파일은 처음 파일이 되구요.

#!/usr/bin/env perl
my @me = map { s/.{4}$//; $_ } glob( '*.jpg' );
for my $j ( 0..$#me ) {
    system( './f10', $me[$j-1], $me[$j], $me[ ($j+1) % @me ] );
}

동작은 물론 system 함수를 자주 사용하므로 조금 느릴 수 있습니다.

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.