-7

サイトの html ファイルを作成するバッチ スクリプトを作成しました。しかし、うまくいかないようです。エラーを取得しようとしましたが、できません

ここにあります: http://pastebin.com/r9n31UCS

ここにはhtmlタグを配置できないため、pastebinを使用しました。

[pastebin からパッチを適用 - OP による「HTML タグを配置できない」コメントの明確な理由なし]

@echo off
set n=1
:start
set /a p=n-1
set /a x=n+1
set A=^<html^>
set B=^<head^>
set C=^<title^>
set D=One Piece Episode %n%
set E=^<^/title^>
set F=^<script type^=^"text^/javascript^" src^=^"^/scripts^/jwplayer.js^" ^>^<^/script^>
set G=^<script type^=^"text^/javascript^"^>jwplayer.key^=^"atgAhLbG+xtxBl7CY0CgP8QhQhg2Rb67mVRQ8A^=^=^";^<^/script^>
set H=^<^/head^>
set I=^<body^>
set J=^<center^>
set K=^<b^>Episode %n%^<^/b^> 
set L=^<br ^/^> 
set M=^<div id^=^"myElement^"^>Loading the player...^<^/div^> 
set N=^<script type^=^"text^/javascript^"^> 
set O=jwplayer^(^"myElement^"^).setup^(^{ 
set P=file: ^"episodes^/op^(%n%^).mp4^", 
set Q=image: ^"Nexusserver0019.cloudapp.net/op/back.jpg^" 
set R=height: 360, 
set s=width: 640
set T=^}^)^; 
set U=^<^/script^>
set V=^<a href^=^"ep(%p%).html^"^> Episode %p% ^<^/a^>^&nbsp^&nbsp^&nbsp^&nbsp^&nbsp^<a href^=^"ep(%x%).html^"^> Episode %x% ^<^/a^>
set W=^<^/center^>
set X=^<^/body^>
set Y=^<^/html^>
echo %A% >> ep(%n%).html
echo %B% >> ep(%n%).html
echo %C% >> ep(%n%).html
echo %D% >> ep(%n%).html
echo %E% >> ep(%n%).html
echo %F% >> ep(%n%).html
echo %G% >> ep(%n%).html
echo %H% >> ep(%n%).html
echo %I% >> ep(%n%).html
echo %J% >> ep(%n%).html
echo %K% >> ep(%n%).html
echo %L% >> ep(%n%).html
echo %M% >> ep(%n%).html
echo %N% >> ep(%n%).html
echo %O% >> ep(%n%).html
echo %P% >> ep(%n%).html
echo %Q% >> ep(%n%).html
echo %R% >> ep(%n%).html
echo %S% >> ep(%n%).html
echo %T% >> ep(%n%).html
echo %U% >> ep(%n%).html
echo %V% >> ep(%n%).html
echo %W% >> ep(%n%).html
echo %X% >> ep(%n%).html
echo %Y% >> ep(%n%).html
echo Generating Episode %n% ...
set /a n=n+1
pause
goto start
pause
4

1 に答える 1

2

ここに私が見る間違いがあります:

Batch/CMD では、変数名に関して大文字と小文字が区別されます。

エピソード番号としてnを使用しますが、後でNを他のものの変数として使用します。特に、N にはリダイレクト演算子が含まれており、これにより cmd が完全に混乱します。

試行される最初の echo コマンドは、実行前に次のように展開されます。

echo <html> >> ep(<script type="text/javascript"> ).html

複数のリダイレクトされた出力に明らかな問題があることがわかります。
(スクリプトの先頭にある「@echo off」をコメントアウトすると、これを自分で確認できます。)

割り当て、次にエコー??

テキストをエコーアウトするだけなのに、なぜテキストを変数に割り当てているのかわかりません。各 SET 割り当てを ECHO と追加 (>>) 部分に置き換えることができ、前述の問題に気付かないでしょう。

作業バージョン

これは、nav リンクを含む一連の HTML ファイルを作成するスクリプトのバージョンです。動作するかどうかを確認するためのプレーヤーはありませんが、CMD スクリプトは十分に機能します。

読みやすくするために、変数nエピソードに置き換えました。(SET / ECHOの繰り返しを廃止する前にそれを行いました。)出力ファイルを変数に保存したので、後で変更することにした場合でも、25行ではなく1行だけ変更するだけで済みます.

また、改行なしのスペース文字エンティティ ref ( ) を使用しているが、末尾のセミコロンを省略していることに気付きました。IE は意図したとおりに解釈するかもしれませんが (DWIM)、それは間違っています。すべての CE 参照は、セミコロンで終わる必要があります。私もそれを変えました。セミコロンもエスケープする必要があります。エスケープしないと、cmd.exe が誤って解釈します。

@echo off
set episode=1
:start
set /a p=%episode%-1
set /a x=%episode%+1
set ofile=ep(%episode%).html

echo ^<html^>>>%ofile%
echo ^<head^>>>%ofile%
echo ^<title^>>>%ofile%
echo One Piece Episode %episode%>>%ofile%
echo ^<^/title^>>>%ofile%
echo ^<script type^=^"text^/javascript^" src^=^"^/scripts^/jwplayer.js^" ^>^<^/script^>>>%ofile%
echo ^<script type^=^"text^/javascript^"^>jwplayer.key^=^"atgAhLbG+xtxBl7CY0CgP8QhQhg2Rb67mVRQ8A^=^=^";^<^/script^>>>%ofile%
echo ^<^/head^>>>%ofile%
echo ^<body^>>>%ofile%
echo ^<center^>>>%ofile%
echo ^<b^>Episode %episode%^<^/b^> >>%ofile%
echo ^<br ^/^> >>%ofile%
echo ^<div id^=^"myElement^"^>Loading the player...^<^/div^> >>%ofile%
echo ^<script type^=^"text^/javascript^"^> >>%ofile%
echo jwplayer^(^"myElement^"^).setup^(^{ >>%ofile%
echo file: ^"episodes^/op^(%episode%^).mp4^", >>%ofile%
echo image: ^"Nexusserver0019.cloudapp.net/op/back.jpg^" >>%ofile%
echo height: 360, >>%ofile%
echo width: 640>>%ofile%
echo ^}^)^; >>%ofile%
echo ^<^/script^>>>%ofile%
echo ^<a href^=^"ep(%p%).html^"^> Episode %p% ^<^/a^>^&nbsp^;^&nbsp^;^&nbsp^;^&nbsp^;^&nbsp^;^<a href^=^"ep(%x%).html^"^> Episode %x% ^<^/a^>>>%ofile%
echo ^<^/center^>>>%ofile%
echo ^<^/body^>>>%ofile%
echo ^<^/html^>>>%ofile%


echo Generating Episode %episode% ...
set /a episode=%episode%+1
pause
goto start
pause
于 2013-06-22T04:53:44.450 に答える