JP1/AJS コマンド備忘(カレンダー関連)
|
※備忘です。使用については責任を負いません。
Windowsのカレンダー関連コマンド
カレンダーパスはユニット情報で表示されるものを「AJSROOT:/」も含め、そのまま記述
例)AJSROOT1:/カレンダー/テストカレンダー
稼働日の設定
・2021/9/25を稼働日(濃い青)にする
ajscalendar -op 2021/9/25 AJSROOT1:/カレンダー/テストカレンダー
非稼働日の設定
・2021/9/27を非稼働日(濃い赤)にする
ajscalendar -cl 2021/9/27 AJSROOT1:/カレンダー/テストカレンダー
稼働情報を取り消す
・2021/9/27をに設定した稼働情報を取り消す
ajscalendar -no 2021/9/27 AJSROOT1:/カレンダー/テストカレンダー
これらを複数行テキストファイルに書いたものをbatとして実行しても動作する。
試しに一か月分ぐらいダラダラ書いて実行させてみたのですが、ちゃんと登録されました。
すでに登録済みのところに再度登録しても次の登録で上書きされるようで問題ないっぽい。
カレンダー情報のみをエクスポートする
ajsprint -F AJSROOT1 -d /カレンダー/テストカレンダー > ファイル名パス
カレンダー情報をインポートする
ajscalendar -F AJSROOT1 -df エクスポートしたカレンダーファイル名パス /カレンダー/テストカレンダー
カレンダー情報(任意のジョブグループ配下)をジョブグループとしてエクスポートする
ajsprint -F AJSROOT1 -a /カレンダー/テストカレンダー > ファイル名パス
ちなみに
AJS/Viewの「退避」で出力されたファイルとまったく同じだった。
退避で出力されるデフォルトのパスは以下
C:\ProgramData\Hitachi\jp1\jp1_default\JP1AJS2\backup\schedule
カレンダーのベースが「稼働」か「非稼働」かをコマンドの結果から確認する
全てを稼働日(薄青)にして非稼働日(濃赤cl)で登録する
逆に
全てを非稼働日(薄赤)にして稼働日(濃青op)で登録する
というケースがあるかと思います。
全てを稼働日とした場合はajsprintの結果が
op=su; op=mo; ・ ・ ・ cl=20XX/XX/XX ・ ・ ・
となり、逆の場合は
cl=su; cl=mo; ・ ・ ・ op=20XX/XX/XX ・ ・ ・
のような感じで最初に基準稼働/非稼働が表示されるため、それでも見分けることはできるかと思います。
出力情報を絞る
Windowsでカレンダーの出力から「unit」を含むものと「op=2021/10」を含むもののみ出力する
ajsprint -F AJSROOT1 -a /カレンダー/テストカレンダー |findstr "unit op=2021/10"
カレンダー情報(任意のジョブグループ配下)をインポートする
以下の例だと/カレンダー/テストカレンダー2配下に上でエクスポートしたジョブグループがリストアされます。
なのでリストア先がうまくなるように調整。こちらもViewの「回復」相当と思われる。
ajsdefine -F AJSROOT1 -d /カレンダー/テストカレンダー2 エクスポートしたファイルのパス
ajsprintの-a,-dでの出力の違い
ajsprint -F AJSROOT1 -a AJSROOT1:/カレンダー/テストカレンダー
unit=テストカレンダー,,jp1admin,; { ty=g; cl=su; cl=mo; cl=tu; cl=we; cl=th; cl=fr; cl=sa; op=2022/01/26; cl=2022/01/27; }
→ajsdefineでインポートできる形式
ajsprint -F AJSROOT1 -d AJSROOT1:/カレンダー/テストカレンダー
cl=su; cl=mo; cl=tu; cl=we; cl=th; cl=fr; cl=sa; op=2022/01/26; cl=2022/01/27;
→カレンダー情報のみ
-aの場合
ajsprint -F AJSROOT1 -a AJSROOT1:/
のように「/」を指定するとエラーになります。
ajsprint -F AJSROOT1 -a AJSROOT1:/*
はOKです。
「回復」でエラーが発生する場合
「回復」を使用した時に、
KAVV462-E ユニット定義内容が不正なため,回復していないユニットが存在します。
と出た場合は、回復しようとしているユニットに現行のAJSでは使用できない文字が含まれている可能性があるので、確認します。
まぁ、()で問題があったように、ジョブユニット/ジョブネット/ジョブグループに記号は使わない方が無難かと。
http://itdoc.hitachi.co.jp/manuals/3021/3021311020/AJSO0008.HTM
ユニット名
ユニット名には,ジョブグループ名,ジョブネット名,ジョブ名を指定します。これらは完全名で指定することもできます。完全名は,先頭が「/」で,ルートジョブグループからそのユニットまでの名称を「/」で区切って指定したものです。ユニットの完全名は,JP1/AJS3の中で一意に管理されています。
ユニット名を完全名で指定しなかった場合,指定した名称の先頭に環境変数AJSPATHの内容が補われます。環境変数AJSPATHを設定していない場合は,指定した名称の先頭に「/」が補われます。
前製品(JP1/AJS)からの移行のために使用できる記号文字
" & ' * < > ? [ \ ] ^‘ {|} ~
をユニット名に使用している場合は,ユニット名全体を「"(ダブルクォーテーションマーク)」で囲み,記号文字の前に「\」文字を置いてキャストする必要があります(例:ajsprintコマンドで,ユニット/net[1]を指定する場合:ajsprint “/net\[1\]")。
なお,これらの記号は前製品(JP1/AJS)からの移行時のために用意されているため,その他の用途では使用しないでください。
Linuxのカレンダー関連コマンド
バックアップ
ajsprint -F AJSROOT -a /* > /home/hoge/jobnet_bk.txt
※カレンダーの場合、登録済み日付もコピーされる
出力情報を絞る
カレンダーの出力から「unit」を含むものと「op=2021/10」を含むもののみ出力する
ajsprint -F AJSROOT1 -a /カレンダー/テストカレンダー|grep -e unit -e "op=2021/10"
KAVS0112-E ユニットとして扱えません<ジョブネット>の名前
とか出たらジョブネットに不正な文字が入っている可能性があります。
ダブルクオーテーションでジョブネットを囲んだり、かっこがあれば「\」でエスケープしてみたりしてください
ajsprint -F AJSROOT1 -a "/カレンダー\[hogee\]/テストカレンダー"|grep -e unit -e "op=2021/10"
カレンダーの出力から「20日後」の「YYYY/MM」を含むもののみ出力する
ajsprint -F AJSROOT1 -d /カレンダー/テストカレンダー|grep `date --date "20 days" "+%Y/%m"` -aでもほぼ同様の出力だが。頭に空白が入る。 フォーマットを指定して先頭にユニット名とOP(運用日)を付与 ajsprint -F AJSROOT1 -f %jn%t%op /カレンダー/テストカレンダー|grep `date --date "20 days" "+%Y/%m"` ↓出力例 テストカレンダー 2023/01/04 ・・・ただし、%jnはすでに複数の日付が登録されていた場合は先頭の日付の前にのみつくため、先頭以外の日付をgrepした場合は日付のみ表示されます。。。