【無料配信♪】Renta !全タテコミ作品第1話

同じような質問をさせて頂きます。

Teraマクロで時間を取得して日付ディレクトリを作成します。
その配下に日付と時間ファイル名を作成したいです。
下記のように記述してもエラーになってしまいます。
正しい記述を教えて下さい。

getdate direct "c:\%Y%m%d"
foldercreate direct
changedir direct

gatdate filedate
sprintf2 filename "調査_%Y%m%d-%H%M%S.txt"

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Tera Term のマクロは今回初めて触ってみたので正しいかどうかはわかりません。


一応動いています。

; ファイル保存フォルダーのパスを決定
; フォルダーが存在していなければ作成する
getdate LOG_PATH "C:\%Y%m%d"
foldersearch LOG_PATH
if result = 0 then
foldercreate LOG_PATH
endif

; ファイルの作成場所を移動
setdir LOG_PATH

; ファイル名を決定
; ファイルを作成
; ファイルを閉じる
getdate LOG_FILE "調査_%Y%m%d-%H%M%S.txt"
filecreate FHANDLE LOG_FILE
fileclose FHANDLE
    • good
    • 0

具体的にどんなエラーに?



sprintf2 filename "調査_%Y%m%d-%H%M%S.txt"
が明かに間違いだとは思いますが、それ以外ですか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qttlで戻り値を取得する方法

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
 sendln 'ssh name2@host2'

以下略
----------------------------------------------------------

上記の「戻り値」をどのようにすれば戻り値で判別してくれるでしょうか。
if文の条件式を $?やresultでやりましたが、どのような戻り値でも
必ず$?は0、resultは1で固定でした。

また、sendmsgとif文の間に以下のように試しましたが、失敗しました。
例1:
----------------------------------------------------------
sendln 'echo $?'
recvln

if inputstr = 0 then ←syntax errorになります。
 ○○
elseif inputstr = 1 then
----------------------------------------------------------

例2:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1247390747参照
----------------------------------------------------------
sendln 'echo $?'
recvln
recvln

hensu=inputstr ←Type mismatch.のエラーになる。 直前にstr2intを入れたりしても駄目でした。
ちなみにsendln 'echo $?'を挟まずsendmsgの直後にrecvlnでも駄目です。

if hensu = 0 then
 ○○
elseif hensu = 1 then
----------------------------------------------------------

host1にシェルスクリプトを入れることは出来ません。

Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。

ざっくり以下のようなマクロを組んでいます。

----------------------------------------------------------
sendln 'ssh name@host1'

wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい

if 戻り値 = 0 then
 ○○
elseif 戻り値 = 1 then
 wait Prompt
 sendln 'exit'
 wait Prompt
...続きを読む

Aベストアンサー

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバックの分を受け取ってしまうようです。
他の出力を受信してしまう場合もあります。
確実にやるなら、目印を付けてwaitでそこまで待つ、というのがいい思います

sendln 'echo "=== EXIT STATUS === : $?"'
wait '=== EXIT STATUS === : '
recvln


・シェルスクリプトを入れることはできなくても、複合コマンドを実行することはできるはずです。
sendln '(sendmsg "test" && echo "==== OK ====") || echo "==== NG ===="'
waitlnで待ち→resultで分岐とできます
http://ttssh2.sourceforge.jp/manual/ja/macro/command/waitln.html

基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。

・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syntax/variables.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/strcompare.html
http://ttssh2.sourceforge.jp/manual/ja/macro/command/str2int.html


・recvln1つではエコーバ...続きを読む

Qttlマクロによるディレクトリ配下の取得

シェルスクリプトで、apacheのhtmlディレクトリを取得しバックアップを作成しております。
シェルスクリプトは、ユーザshコマンドによる実行です。(cronでは動かしておりません。)

保存先:/home/test/html_backup/配下
保存ファイル名:yyyymmdd.tar.gz(yyyymmddシェルスクリプト実行日となる。)

よって、/home/test/html_backup/ディレクトリ配下にある複数のバックアップ全てを、
マクロによるscp転送で取得したいと考えています。

同名ファイルが存在する場合は、常に上書きでかまいません。


サーバに接続後、下記コマンドを実行しようと思いました。

wait '$'
scprecv '/home/test/html_backup/*'
scprecv '*' 'c:\temp'


としましたが、うまくマクロが動きません。
sendlnでファイル転送ができることはわかりましたか、
今回やろうとしていることは、複数のバックアップファイルがあるため
自動でsendlnでは難しいと思っております。


どのようにttlを書けば
バックアップファイルを全部取得できるのでしょうか。

ご教授お願いいたします。

シェルスクリプトで、apacheのhtmlディレクトリを取得しバックアップを作成しております。
シェルスクリプトは、ユーザshコマンドによる実行です。(cronでは動かしておりません。)

保存先:/home/test/html_backup/配下
保存ファイル名:yyyymmdd.tar.gz(yyyymmddシェルスクリプト実行日となる。)

よって、/home/test/html_backup/ディレクトリ配下にある複数のバックアップ全てを、
マクロによるscp転送で取得したいと考えています。

同名ファイルが存在する場合は、常に上書きでかまいません。


サーバに接...続きを読む

Aベストアンサー

scprecvで指定するのはファイル名なので、ファイル名を指定しないと駄目でしょう。

ls -1 して、結果を recvln して、scprecv するのでしょうか。

私なら、Teratermを使わずに、Puttyパッケージの pscp (Windows用scpコマンド) を使って、
C:\temp>pscp -r -i id.ppk -P port user@host /home/test/html_backup .
としますね。

WinSCPのコマンドラインオプションでも同様のことは出来ると思います。

QTeraterm scprecvの上書き確認なし

Teraterm4.7でマクロを作成しています。
scprecvコマンドによってファイルをローカルにコピーしています。
定期的に自動化により実行しているので、コピーは同じファイル名にしコピーしています。
上書き確認のポップアップがあがるのですが、確認なく上書きする方法を教えてください。
コマンドのオプション等もなく困っています。
ご教授よろしくお願いします。

Aベストアンサー

ローカルファイル名を、重複しないもの(日付時刻を入れるとか、連番とか)で指定して保存するのはどうでしょうか?

ファイルの存在を確認する
http://ttssh2.sourceforge.jp/manual/ja/macro/command/filesearch.html

ローカルファイル名を指定する
http://ttssh2.sourceforge.jp/manual/ja/macro/command/scprecv.html

QTeraTermマクロの文字列結合

hostname = "100.100.100.100"
log="20101010"

という変数をteratermマクロで設定しております。
この二つの変数の間に、空白または_(アンダーバー)を一つ入れて

"100.100.100.100_20101010"
という文字列を作成して、変数に格納するなりしたいのです。

ただ、hostname変数とlog変数の中身は変えれないので、
hostname = "100.100.100.100_"や、log="_20101010"の
このやり方以外でお願いします。

ご教授よろしくお願いします。

Aベストアンサー

sprintf2 ver '%s_%s' hostname log

でverに入ります。

QTERA TERMを隠す方法

TERA TERMでマクロを起動した時、
実行結果の画面が出力されますが
これを最小化もしくはバックグラウンドで
見せないように起動する方法があれば
教えてください。
マクロのオプション /V や /I では
見せないようにすることができませんでした、
何か方法があれば教えてくださいませ。

Aベストアンサー

connect '/I xxx.xxx.xxx.xxx'のように
connectのオプションに/Iをつけてください。

Q[teraterm] waitコマンドで停止しない。

お世話になっております。
現在teratermのマクロを作成しているのですが、waitコマンドがうまく動いてくれない箇所があります。
どなたか解決策をご教授いただけないでしょうか。

【質問】
UNIX上にてシェルを実行後、コマンドプロンプトが戻ってきた時点で"echo $?"にてシェルのリターンコードを確認するマクロを作成しています。しかし、シェルの終了に時間がかかるためか、コマンドプロンプトが戻ってくるのを確認せずに"echo $?"を実行してしまっています。

【プログラム(該当箇所)】
timeout=20
sendln 'シェルの実行'
wait ']$ '
sendln 'echo $?'
wait '0'

【コンソール上】
]$ シェルの実行
echo $?
シェルの実行結果
]$

以上、よろしくお願いいたします。

Aベストアンサー

sendln 'シェルの実行'
の直後へ
pause 1
を入れてみてはどうでしょうか。(1秒間停止してつぎへ進みます)

それでだめなら、
wait ']$ '
で]$を待っていますが、シェルの実行中に、この]$がでてないか確認して下さい。
実行後のコマンドプロンプトが、[XXX]になることが決定しているなら
wait '[XXX]'としてみて下さい。XXXはあなたの環境で表示される文字列です。

Q【Teratermマクロ】文字列の一致比較について

If文を用いて、文字列同士が同じかを確かめたいのですが
If文では数字のみしか比較できないらしいということがわかりました。

Teratermの場合、他の方法などで文字列の一致を確認できないのでしょうか?

ご存知の方がいらっしゃいましたら、是非教えて下さい。

Aベストアンサー

そんなあなたに: strcompare

他にも、strmatch(要バージョン4.59以降)などあります。
詳しくは、TTLコマンドリファレンスをご覧ください。

Q【Teratermマクロ】文字列の分割について

Teratermのマクロで文字列を分割する方法はありますでしょうか?
(例えば、左端から何文字だけ切り取る等。)

他のプログラミング言語ではよくある機能なので、ありそうとは思っているのですが
インターネットでいくら調べても見当たらないので。

もしご存知の方がいらっしゃいましたら、是非お願いします。

Aベストアンサー

strcopyがそれで代用きるかと思います。
以下、strcopyのヘルプの説明です。
-------------------------------
strcopy
文字列をコピーする。

形式
strcopy <string> <pos> <len> <strvar>
解説
文字列 <string> の <pos> 文字目から <len> 文字分を文字列変数 <strvar> にコピーする。


strcopy 'tera term' 6 4 substr
; substr='term'
-------------------------

QTeraTermマクロのinputboxで入力した値をメッセージ確認表示するには?

TeraTermマクロを使用し、inputboxで獲得した値を
確認メッセージ(yesnobox)に表示するにはどのような書き方をすれば良いでしょうか?

;retry
inputbox '該当のインターフェースを入力してください。''input interface'
yesnobox inputstr 'のインターフェースで良いですか?'
if result=0 then
goto retry
else
endif
sendln 'command' ←例えばその後、OKならコマンドを実行。


入力したインターフェースで間違いないか確認表示したいのですが
どのように書けば良いのでしょうか?

上記書き方では間違ってるのでエラーとなってしまいます。

Aベストアンサー

;retry
inputbox '該当のインターフェースを入力してください。''input interface'
mes = inputstr
strconcat mes 'のインターフェースで良いですか?'
yesnobox mes
if result=0 then
goto retry
else
endif

って感じでしょうかね。
一度変数に入れてからstrconcatで連結する。ということに。

Qteraterm から起動したプログラムの出力結果を得たい

 teraterm のマクロから exec でテキストを出力するプログラムを起動し,その出力結果をテキストとして保存したいと思っています.

 上を実現するために下のようなマクロを作ったのですが,出力結果をテキストファイルとして得られません(下の例では,a.txt が作られません.またはどこに作られているかわかりません).

> cmd = 'ipconfig >> a.txt'
> exec cmd

 マクロを実行すると一瞬黒い画面が見えるのでコマンドは実行されていると思います.何か間違っているのでしょうか.

Aベストアンサー

リダイレクトはCMD.EXEの機能なので、
cmd = 'cmd /c ipconfig >> a.txt'
ですかね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング