ラベル Bat の投稿を表示しています。 すべての投稿を表示
ラベル Bat の投稿を表示しています。 すべての投稿を表示

2018/02/27

へのショートカット

regeditで何度とめてもWindows Updateで復活する「へのショートカット」にうんざりしたのでbatにした

2013/06/11

androidから会社のPCを起動してssh越しにリモートデスクトップ

必要なもの

  • 外からsshでログインできる社内のサーバー
ちなみにうちの会社のSSHはcygwinで動いてます(笑)

方法

まずはリモートデスクトップ接続する会社のPCを起動。うちの場合は同僚がwolパケットを投げつけるGaucheスクリプトを書いてくれているのでそれを使っている。serverにsshでログインしてそのスクリプトを叩くだけなのでandoroidからでもいける。connectbotとかで。
次にsshトンネリング。
% ssh valvallow@server -L 12345:192.168.1.42:3389 -N
Windowsの場合、mysysgitなんかを入れてればmsysgitのbinの中にsshがあるので、下記のようなbatを作っとくと良い。
C:\msysgit\msysgit\bin\ssh valvallow@server -L 12345:192.168.1.6:3389 -N
ほんでリモートデスクトップ接続。windowsからならmstsc。ubuntuとかならvinagreとかからlocalhost:12345に接続で完了。

追記


2013/03/25

雑なリマインダ その2

以前、こんなものを作った。

こんな雑なbatだけど今でも使っている。でもタスクバーにcmdが出っぱなしなのでうざい。間違って閉じてしまうこともある。ということで、改良というより作りなおしてwindows標準のタスクスケジューラに登録するようなものにした。Windows7だと動くと思います。

タスクは実行されたあとに削除されるようになっている(/Zオプション)。ただ/ZオプションをつけただけだとXMLがどうのこうのというエラーが出るので/V1オプションを付けてある。

エラー: タスク XML に必須の要素または属性が含まれていません。
(41,4):EndBoundary:

タスクスケジューラに登録するID文字列を作るときに日付と時間を使ってるんだけど、そのフォーマット指定がえらいことになってる。

それと、結局使ってないけど、コマンドの結果を変数に保存するのにforを使う必要があるらしく、これもやけに大変だな・・・。勉強になるなぁ(白目

@FOR /F "usebackq tokens=*" %%i in (`DATE /T`) DO @SET TASK_CREATE_DATE=%%i

ついでにメモしておくと、unixでいう cat は type、diff は fc、traceroute は tracert、grep は findstr、ifconfig は ipconfig 辺りで代用できるって認識で良いのかね。more、arp、ping、netstat、nslookup なんかは同じのがあるようで。


2012/10/19

雑なリマインダ

「客先のfooさんにhogeの件で電話をかける」などのタスクはGoogle CalendarやGoogle Tasksで管理している。でも実際電話したら不在だったので「30分後にもう一度電話する」というタスクを忘れてしまう。ということで、こんな雑なリマインダを使ってる。 リマインダが欲しいけど、そのためにソフトを常駐させるのも嫌なので、こんなの使ってる。

そういえば以前こんなの作ってた。console版のプログレスバー付きタイマーといったところ。notify-sendと組み合わせればリマインダになるな。

と、思ったら、こんなの作ってた。

2009/10/08

TFS - チームプロジェクトを削除する

TFS : Team Foundation Server

開発の超力強い味方。

 

使い始めた頃に安易にチームプロジェクトを作りまくって削除方法がわからず困ったのでメモ。

  1. Microsoft Visual Studio 9.0\Common7\IDE\TFSDeleteProject.exe を叩く。以上。

 

GUIでの削除はできない。Batを作っておくと便利。

@Rem -------------------------------------------------------------
@Rem --- TeamProject delete bat
@Rem --- 2009/07/02 Defined By hoge
@Rem -------------------------------------------------------------

@CD C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
@Set /p s="server name : "
@Set /p p="project name : "
@TFSDeleteProject.exe /server:%s% %p%

@Pause >nul

@Set s=""
@Set p=""





2009/05/11

[bat]今日の日付取得

Set today = %date:/=%

Windows DOS/コマンドプロンプト辞典

[Sql][bat]bcpでSelect文を実行する

データベースDbNameのHogeTableをSelectした結果をlogファイルに吐きます。userは、まぁsaとか、****は実際のパスワードに変えて実行するとOK。

bcp "USE DbName Select * From HogeTable" queryout "c:\select.log" -t "," -c -U user -P ****

osqlの方が一般的ですね。
@osql -Uuser -P**** -Sservername -ddbname -q "SELECT * FROM HogeTable"


[bat]ネットワーク内の使用されているIPアドレスを調べる

片っ端からpingします。たぶんもっと良い方法があるんでしょうけどね。
この場合、192.168.1.0 ~ 192.168.1.254までpingしてそのログを吐きます。

片っ端ping.bat
for /l %%a in (0,1,255) do (ping -a -n 1 -w 1 192.168.1.%%a | find "Pinging") >> ping.log
notepad ping.log
goto :EOF


Windows DOS/コマンドプロンプト辞典マスタリングTCP/IP 入門編 第4版

[bat][Gauche]同階層にあるGaucheスクリプトを全て実行

だったと思う。バッチの中身見ても良くわからないところがある。

「%~n0」←これなんだっけ・・・。

 

@Echo -------------------------------------------
@Echo ---    Gauche Script Execute Bat    ---
@Echo ---    Defined By    valvallow    ---
@Echo ---    Defined Date    2009/02/19    ---
@Echo -------------------------------------------

 

@Echo;

 

@Echo ----- Execute Sibling Gauche Scripts -----
@Echo ----- Execute? y/n -----
@Set /p c=
@Set l=%~n0.log


@If %c%==n (GoTo End)


@Echo;

 

@Echo ----- Results -----
@If Exist %l% (Del %l%)
@for %%a in (*.scm) do (@gosh -b %%a) >>%l%
@for /F "delims=" %%a in (%l%) do (@Echo %%a)


@Echo;

 

@Echo ----- Executed FileNames -----
@dir /B /D *.scm


@Echo;

 

:End

 

@Echo ----- Press any key to exit -----
@pause > nul

 

@Set c="";
@Set l=""

 

:EOF

 

  • 追加:
    • 「%~n0」
      • 思い出した。これ自分自身の名前だ。bat自身の。たぶん。

[bat][sql]bcpでcsvを取り込む/吐き出す

MSSQL。SQL Serverがインストールされていない環境でもbcp.rllとbcp.exeがbatと同じ階層にあればOK。DbNameという名前のデータベースのTableNameというテーブルにTableName.csvのデータを取り込めます。

bcp in
SET U=user
SET P=****
SET S=(local)
bcp "DbName..TableName" in "TableName.csv" -t "," -c -r -S %S% -U %U% -P %P%

bcp out
SET U=user
SET P=***
SET S=(local)
bcp "DbNname..TableName" out "TableName.csv" -t "," -c -r -S %S% -U %U% -P %P%


Windows DOS/コマンドプロンプト辞典達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)プログラマのためのSQL 第2版SQL Hacks ―データベースを自由自在に操るテクニック

[bat][Sql]テーブルの値をバッチで切り替える

DBのテーブルの値を頻繁に切り替えたいことがありますよね。そういうときにこういうBatを用意してます。テストの時とか現地で切り替えたいときとか・・・。まぁいろいろ応用も利きます。

これはMSSQL用です。

 

@ECHO ***********************************************************
@ECHO     【BatName】HogeTable:FooColumn Switch Bat
@ECHO     【Defined Date】2008/06/05
@ECHO     【Defined By】valvallow
@ECHO ***********************************************************

@SET /p USERNM="ログインユーザ名→"
@SET /p PASSWORD="パスワード→"
@SET /p SEVERNM="サーバー名→"
@SET /p DBNM="データベース名→".
@REM @SET DBNM=BooTable
@ECHO ==============================
@ECHO HogeTable FooColumn
@ECHO 1 → ON
@ECHO 0 → OFF
@ECHO ==============================
@SET /p value=""

@osql -U%USERNM% -P%PASSWORD% -S%SEVERNM% -d%DBNM% -Q"UPDATE HogeTable SET FooColumn =%Value%" > NUL

@SET USERNM=""
@SET PASSWORD=""
@SET SEVERNM=""
@SET DBNM=""
@SET Value=""

[bat]IPアドレスのon/off

家と会社でIPアドレス関連の設定を切り替えているので・・・、こんなバッチをコマンドランチャから実行してます。

 

IpOn.bat

netsh interface ip set address "ローカル エリア接続" static 192.168.1.215 255.255.255.0 192.168.1.254 none
netsh interface ip set dns "ローカル エリア接続" static 192.168.1.254

 

IpOff.bat

netsh interface ip set address "ローカル エリア接続" dhcp
netsh interface ip set dns "ローカル エリア接続" dhcp

2009/04/19

[C#]Update, Insert, Batそれぞれを生成

簡単なUpdate文、Insert文、それらを実行するBat、それらのBatをまとめて実行するBatを生成。
厳密なものじゃないです。Update文とかWhere条件はANDだけ(笑

ソースはここ

WS0679

事前にXMLでCSVのカラム番号とテーブルのカラム名を対応付けておいて、インポートみたいな。
  • XML:PairsでCSVのインデックスとテーブルのカラム名を対応付ける
  • XML:KeysでテーブルのキーカラムとCSVのキーインデックスを対応付ける
  • XML:ConfigでPairs、Keys、CSVファイル、テーブル名を設定
  • 設定はPairクラスの配列をシリアライズ/デシリアライズ(XmlSerializer)

できることは
  • CSVをDBにInsert
  • CSVを元にDBをUpdate
  • CSVを元にInsert文生成
  • CSVを元にUpdate文を生成
  • それらのInsert文やUpdate文のスクリプトを実行するBatを作成
  • それらのBatをまとめて実行するBatを作成

残念ながらこれもソースを全て公開できる状態ではないので一部をうp・・・。
そうはいってもほとんど入ってるけど。


Windows DOS/コマンドプロンプト辞典OBA開発入門 OfficeとSharePoint Server 2007の連携によるビジネスアプリケーション構築 (マイクロソフト公式解説書)VSTOとSharePoint Server 2007による開発技術 Visual Studio 2008で構築するOBAソリューション (Programmer’s SELECTION)絶対現場主義Visual C#実践講座―開発の現場から生まれた実践テクニック&TIPS集

2009/04/18

[Bat]Callのテスト

このご時勢にBatジェネレータを書こうと・・・。で、まぁCallのテストしたわけです。

他のBatをCallで呼んだ時に、制御が戻るまで待ってくれるかのテスト。

 

hello.bat

echo "hello, world"
pause

 

hello2.bat

echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"
echo "hello, world"

 

callhello.bat

echo call hello
call hello.bat
call hello2.bat

pause

 

 

 

 

そういえばこういの持ってたw ↓

Windows DOS/コマンドプロンプト辞典
飯島 弘文
翔泳社
売り上げランキング: 76183
おすすめ度の平均: 4.5
4 コマンドプロンプトの辞書として役にたつ本
5 ms-dosの基礎知識を高めたいと思い購入しました。
4 リファレンスとしては良著
5 DOSを使う方、興味のある方には最良の書だと思います
5 Windowsでコマンドプロンプトを使う時に役に立ちました。

2009/02/27

[bat][バッチ][コマンドライン]Windowsのバッチとかコマンドラインとか

WS0594
会社と家でネットワークの設定を切り替えたりしたい時。IPアドレス等の設定って面倒ですよね。わざわざネットワークの設定画面開くのとか。
会社でノートパソコン使ってる人なんかは、家と会社で設定が違うので大変です。今までは、拾ってきたバッチを使ってたんですが、懐かしくってちょっとバッチプログラミングしてみましたので晒してみます。
下の方に一部解説とか、小技載せてみましたw
結構おもしろかった(笑)こんどWindows DOS/コマンドプロンプト辞典でも読みなおして遊んでみようかな~w

今まで使ってたやつ。
これらを家で会社でコマンドランチャからピコってやってます。
@Rem IPON.bat
@Rem 会社用
netsh interface ip set address "ローカル エリア接続" static 192.168.1.215 255.255.255.0 192.168.1.254 none
netsh interface ip set dns "ローカル エリア接続" static 192.168.1.254
@Rem IPOFF.bat
@Rem 家
netsh interface ip set address "ローカル エリア接続" dhcp
netsh interface ip set dns "ローカル エリア接続" dhcp


で、別に上記のものでよかったのですが、というより、上記のものの方が良かったかもしれませんが、ONとOFFを一緒くたにしたのを作ってみました。結構楽しかったw
(コピーすれば使えますが、DEFAULTラベルのところの値はお使いの環境用に書き換えて下さい。)
@Echo Off
Echo ---------------------------------------------------
Echo ---    Change Network Config            ---
Echo ---    2009/02/26 valvallow            ---
Echo ---------------------------------------------------

:TOP

Echo.
Set AREA="ローカル エリア接続"
Set line=---------------------------------------------------

IPConfig | Find ". : "
Echo.

:Menu
Echo %line%
Set /p m="* Select memu 0:? / 1:on / 2:off / 3:end * "

If %m%==0 (GoTo HELP)
If %m%==1 (GoTo IP_ON_CONFIG)
If %m%==2 (GoTo EXEC_OFF)
If %m%==3 (GoTo END) ELSE (GoTo END)

:IP_ON_CONFIG
Echo %line%
Set /p m="* 0:input / 1:default * "
If %m%==0 (GoTo INPUT)
If %m%==1 (GoTo DEFAULT) ELSE (GoTo END)

:DEFAULT
Set IP=192.168.1.215
Set SubNetMask=255.255.255.0
Set DefaultGateway=192.168.1.254
Set DNS=192.168.1.254
GoTo EXEC_ON

:INPUT
Echo %line%
Set /p IP="IP Address = "
Set /p SubNetMask="Sub Net Mask = "
Set /p DefaultGateway="Default Gateway ="
Set /p DNS="DNS = "
GoTo EXEC_ON

:EXEC_ON
Echo %line%
Echo AREA=%AREA%
Echo IP=%IP%
Echo SubNetMask=%SubNetMask%
Echo DefaultGateway=%DefaultGateway%
Echo DNS=%DNS%
Echo %line%
Echo now setting....
Netsh Interface IP Set Address %AREA% static %IP% %SubNetMask% %DefaultGateway% none
Netsh Interface IP Set DNS %AREA% static %DNS%

Echo %line%
IPConfig | Find ". : "
GoTo END

:EXEC_OFF
Echo %line%
Echo AREA=%AREA%
Echo IP=""
Echo SubNetMask=""
Echo DefaultGateway=""
Echo DNS=""
Echo %line%
Echo now setting....
Netsh Interface IP Set Address %AREA% dhcp
Netsh Interface IP Set DNS %AREA% dhcp

Echo %line%
IPConfig | Find ". : "
GoTo END

:HELP
Echo %line%
Echo "Help"
Echo 0:?    Call Help
Echo 1:on    Network Configs ON (Input or Default Values)
Echo 2:off    Network Configs OFF (To Empty)
Echo 3:end    Exit this bat
GoTo Menu

:END

Echo %line%
Set /p continue="* Exit or Continue? e/c * "
If %continue%==c (GoTo Menu)

Set AREA=""
Set IP=""
Set SubNetMask=""
Set DefaultGateway=""
Set DNS=""
Set continue=""
Set line=""
Set m=""

:EOF



少しだけかいつまんで解説でも。
Setで変数に値をセット。
Set hoge="hoge"
Set moge=1

変数を使用する際は%で囲む。
Echo %hoge%
実行するとコンソールにhogeってでます。

コメント
Rem コメント

出力
Rem コンソールに出力
Echo Hello, worlld !!

Rem 指定したテキストに出力
Echo Hello, world !! > C:\log.log

Rem 指定したテキストに追記
Echo Hello, world !! >> C:\log.log

Rem どこにも出力しない
Echo Hello, world !! > nul

Rem 改行
Echo.

条件分岐 ()で囲めば複数のコマンド可
If %m%==3 (GoTo END) ELSE (GoTo END)

入力を変数に受け取る Set /p 変数
Set /p m="* Select memu 0:? / 1:on / 2:off / 3:end * "

パイプ(コマンドの出力を次のコマンドに渡す)
Rem IPConfigの結果から". : "という文字列がある行だけ出力
IPConfig | Find ". : "

ラベル (GoTo ラベル名 でジャンプ)
:DEFAULT



以下、上記のファイルとは関係ありませんが・・・
今日の日付が取れます。
下記の結果は20090227
Echo %date:/=%


forループもあります。
下記の例だと192.168.1.1 ~ 192.168.1.254までのIPアドレスにpingを打ちます(笑)ping結果はIP.txtに保存されます。意外に結構役に立つ。
for /L %%f in (1,1,254) do ping -n 1 -w 50 192.168.1.%%f >>IP.txt


後は関係ないけど、SQLサーバー向けとか、思い出したのでついでに。
SQLServerが入ってれば・・・
クエリ発行バッチとか作れたりします。
@SET /p SERVERNAME="サーバー名→"
@SET /p DBNAME="データベース名→"
@SET /p USERNAME="ユーザー名"
@SET /p PASSWORD="パスワード→"

@SET Q="DELETE FROM HogeTable"
@osql -U%USERNAME% -P%PASSWORD% -S%SERVERNAME% -d%DBNAME% -Q%Q%

もちろんSELECTも可。結果がコンソールに表示される。
@SET /p SERVERNAME="サーバー名→"
@SET /p DBNAME="データベース名→"
@SET /p USERNAME="ユーザー名"
@SET /p PASSWORD="パスワード→"

@SET Q="SELECT * FROM HogeTable"

@osql -U%USERNAME% -P%PASSWORD% -S%SERVERNAME% -d%DBNAME% -Q%Q%

さらに関係ないけど、しょぼいフォルダ検索とかw
Pathに探したいディレクトリのパス、eに拡張子を入れると、ヒットしたファイルがコンソールに一覧され、冗長ですが、ログファイルにも同じだけループして結果を書き出します。(再帰探索はしません)
ポイントはログ名。「%~n0」で実行されている自分自身の名前を取れます。
@Set /p d="Path : "
@Set /p e="Extention : "
@Echo ---------------------------------------------------
@for %%a in (%d%\*%e%) do @echo %%a
@for %%a in (%d%\*%e%) do @echo %%a >>%~n0.log
@Echo ---------------------------------------------------
@Echo ----- Press any key to exit -----
@pause > nul

参考はこちら
netsh interface ipコマンドでIPアドレスを設定する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060809/245476/
持ち歩いているノート PC で簡単に TCP/IP の設定を変えたい
http://www.monyo.com/technical/windows/26.html
Rem ローカルエリア接続設定切替え用スクリプト(Windows2000/XP)
http://www.bais.chubu.ac.jp/~tatsuoka/apnet21/page2.html


Windows DOS/コマンドプロンプト辞典マスタリングTCP/IP 入門編 第4版 プログラマのためのSQL 第2版SQL Hacks ―データベースを自由自在に操るテクニック