Winshotで大量取得した画像ファイルの名前を限られた環境で一括でリネームする。

前提条件

銀行系などセキュリティが厳密なプロジェクトに関わると、使えるソフトが限られてる環境がままあります(特にインフラ系)。そこで、「エビデンス」という名の画面ショットをたくさん撮らされることがあるのですが、後々になって名前を変えたくなることがあります。今回はその方法を紹介したいと思います。ただし、いくつかのソフトは使えることとします。

  • さくらエディタ(秀丸でも正規置換が出来ればOK)
  • MS Excel
  • だらしないファイル一覧

 だらしないファイル一覧

f:id:arkey:20151229001535j:plain

 

ここにWS000000.JPGからWS000010.JPGまでのだらしないファイル名があります。では今回は「WS」と「0」の間に「_20151229_」という文字列を入れてみようと思います。結果としては「WS_20151229_000000.JPG」みたいな名前になります。(え?日付はファイル名の最初につけるもんだって?こまけぇこたぁいいんだよ!)

ファイル一覧を出力してエクセルに貼り付ける

コマンドプロンプトを使ってファイル一覧を出力します。

f:id:arkey:20151229002316j:plain

 

ファイル名を右クリックして範囲を選択して、コピーして、おもむろにエクセルのB列に貼り付けて、A列には「ren」を入力します。

f:id:arkey:20151229002710j:plain

 

ファイル名を置換する

f:id:arkey:20151229003053j:plain

今回はAltキーを使って置換しましたが、正規表現で置換出来る人は正規表現を使いましょう。

今度はこのファイル名をコピペしてエクセルのC列に貼り付けます。

A列のrenがリネームコマンド、B列が変換前ファイル名、C列が変換後ファイル名になります。

f:id:arkey:20151229003420j:plain

データの入ったセルを全て選択してサクラエディタに貼り付けます。

f:id:arkey:20151229003629j:plain

タブ区切りになっているので、タブをスペースに変換します。タブの正規表現は「\t]です。置換後は空白になってますが、「 」半角のスペースが入ってます。

 

f:id:arkey:20151229003702j:plain

置換後は以下の通りになります。よく見ると分かると思いますが、この一行一行がコマンドプロンプトのコマンドになっています。

f:id:arkey:20151229003850j:plain

ファイル名をリネームする

先ほどのテキストデータをコマンドプロンプトに貼り付けると、コマンドが実行されて以下のようにイケてる感じになります。

f:id:arkey:20151229004059j:plain

エクセルとエディタ環境しか無い過酷な環境でリネームをする際には、上記のような方法を使ってみても良いのではないでしょうか。

 

teratermでネットワーク機器のconfigを取得する

 

 自宅にNW機器が増えるとconfigの管理が大変ですよね。そこで、少し原始的な手段ですがteratermだけでconfigを一括で取得出来るバッチを作成して使用しています。本日はそのバッチを公開致します(半分、自分のメモ的な意味でもあります)。

以下のバッチに補足致しますと、kaedeはconfigを保存するサーバ(CentOS6.7)です。sirius,vega,betel,aironetはCisco機器です。denebはH3C(現HP)の機器です。

システム開発において個人情報を扱う場合(特に銀行系)は、開発端末で使用出来るソフトが限られる事が多いです。主観ですがteratermはインストール許可が降りる傾向にありますので、以下のようなバッチが役に立つかと思います。

やっつけで作ったバッチですので細かい部分で「こうした方がいい」みたいな意見があるかと思います。指摘事項があるようでしたら、指摘して頂ければ幸いです。お願い致します。

 

 

;=============================================
;変数定義
;=============================================

;各機器のIPアドレス
sirius = "10.0.0.1"
vega = "10.0.0.253"
betel = "172.16.0.1"
deneb = "10.0.0.254" ;HPのスイッチなので要注意
kaede = "10.0.0.50"
aironet = "172.16.0.253"

;各機器の名前
name_sirius = "sirius"
name_deneb = "deneb"
name_vega = "vega"
name_betel = "betel"
name_kaede = "kaede"
name_aironet = "aironet"

;ユーザ名、パスワード
username = "arkey22"
password = "hogehoge"

;今日の日付
getdate date "-config_%Y%m%d.cfg"
gettime logfile "Y:\logs\teraterm_macro_log\GetConfig_NW_%Y%m%d-%H%M%S.log"

;=============================================
;sirius ログ取得
;=============================================
strconcat sirius ':23 /nossh /T=1'
connect sirius
;ログ取得開始
logopen logfile 0 0
wait 'Username: '
sendln username
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_sirius date
sendln name_sirius
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2


;=============================================
;vega ログ取得
;=============================================
strconcat vega ':23 /nossh /T=1'
connect vega
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_vega date
sendln name_vega
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2


;=============================================
;betel ログ取得
;=============================================
strconcat betel ':23 /nossh /T=1'
connect betel
wait 'Username: '
sendln username
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_betel date
sendln name_betel
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2

;=============================================
;aironet ログ取得
;=============================================
strconcat aironet ':23 /nossh /T=1'
connect aironet
wait 'Username: '
sendln 'Cisco'
wait 'Password: '
sendln 'Cisco'
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_aironet date
sendln name_aironet
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2

 

;=============================================
;deneb ログ取得
;=============================================
strconcat deneb ':23 /nossh /T=1'
connect deneb
wait 'Username:'
sendln username
wait 'Password:'
sendln password
wait '>'
mpause 100
tftp="tftp "
strconcat tftp kaede
strconcat tftp ' put '
strconcat tftp 'config.cfg '
strconcat tftp name_deneb
strconcat tftp date
sendln tftp
sendln 'quit'


mpause 1000
logclose
closett
end

 

自己紹介です。

初めまして、Arkey(あーきー)と申します。ブログ自体はArkey's Diaryで2006年から続けているのですが、こちらのブログは技術的な内容を主体に取り扱っていこうと思っております。更新頻度は低めになる予定ですが、皆様の役に立てるような情報を公開していければと思います。誤って間違った情報を発信することもあるかと思いますので、その際はコメント等にて指摘をして頂ければ幸いです。

簡単に自己紹介をさせて頂きます。冒頭に記載した通り、ネット上では「あーきー」を名乗っております。2015年現在、27歳です。埼玉県の川口市に済んでます。IT業界歴は3年ほどです。詳しくは業務経歴書(2015/12/14版)をご覧頂ければと思います。

その他、こちらのページに関しては随時更新予定ですので、更新した際には都度リンクを張って周知を行う予定でございます。

 

以上、簡単ではございますが自己紹介とさせて頂きます。今後ともよろしくお願い致します。