Script[コマンドの操作].小話

戻る


Introduction

ファイル操作による単純な例を用いて、コマンドの自動操作ができるスクリプトの小話を
このページでしてみようと試みる。


  • C Shell ,コマンドプロンプトのスクリプトでは、基本的なコマンドを使って
    コマンドの操作を試みる

  • Rubyでは、C Shell ,コマンドプロンプトのスクリプトを操作したり、
    同じようなファイル操作のスクリプトを作成し操作する。

  • VBScript,ActionScriptでは、概略と他のスクリプトとの併用を考える。

目次

C Shell

コマンドプロンプト

Ruby

VBScript

AppleScript




C Shell

○ファイルの生成例(其の一)
標準入力を使う。
%cat << EOF > abc.txt
12345
abcde
fgzhi
EOF
%cat abc.txt
12345
abcde
fgzhi
○ファイルの生成例(其の二)
パイプを使う。
%(( echo "12345";echo "abcde";echo "fgzhi" ) |  cat ) > abc2.txt
%cat abc2.txt
12345
abcde
fgzhi
ディレクトリの中のとある拡張子のすべてのファイルに対して
拡張子変更するスクリプト例

※エディタでfileを作る。
※cshのパスを確認あるいは修正が必要
./rename
----------------------------------------------------------
#!/bin/csh

echo -n "input extension ->"
set ext = $<
echo -n "input changing extension ->"
set chg = $<

foreach i ( *.$ext )

mv $i $i:r.$chg

end

echo "done....."
----------------------------------------------------------


./txt2doc.rn
----------------------------------------------------------
txt
doc
----------------------------------------------------------


※rename fileと併用
./txt2docrn
----------------------------------------------------------
#!/bin/csh

rename << EOF
txt
doc
EOF
----------------------------------------------------------


拡張子txtからdocに拡張子を変更する例 (type1〜type4) 

事前設定に以下のような例で実行権限を与える。
%chmod 700 ./rename
%chmod 700 ./txt2docrn

type1
***********************************

%./rename
input extension ->txt
input changing extension ->doc
done.....

type2
***********************************

%./rename << EOF
?txt
?doc
?EOF
extension ->input changing extension ->done.....

type3
***********************************

%./rename < ./txt2doc.rn
extension ->input changing extension ->done.....

type4
***********************************

%( echo "txt";echo "doc" ) | ./rename
extension ->input changing extension ->done.....

type5
***********************************

%./txt2docrn
extension ->input changing extension ->done.....

目次へ

コマンドプロンプト

○簡単な備考
  • このページのC Shellの中で使った <, >, | や >>が使える。

  • スクリプトファイルはbatかcmdの拡張子を使う。

ディレクトリの中のとある拡張子のすべてのファイルに対して
拡張子変更するスクリプト例

※エディタでfileを作る。
.\rename.bat
----------------------------------------------------------

for %%v in (*.%1) do (

ren %%v %%~nv.%2

)

echo done.....

----------------------------------------------------------


※rename.bat fileと併用
.\txt2docrn.bat
----------------------------------------------------------

rename.bat txt doc

----------------------------------------------------------


拡張子txtからdocに拡張子を変更する例 (type1〜type2) 

type1
***********************************

>.\rename.bat txt doc
(コマンド実行後コマンドの実行が表示される。)

type2
***********************************

>.\txt2docrn.bat
(コマンド実行後コマンドの実行が表示される。)

目次へ

Ruby

○簡単な備考
  • このページでは「WindowsのActiveRuby,MacOSXで標準でついてくるRuby」を使った。

上記のrename(C Shell),remane.bat(コマンドプロンプト)を利用する例

※エディタでfileを作る。
※rename file と併用
./doc2txtrncsh.rb
----------------------------------------------------------

IO.popen("rename","w") {|io|
io.puts "doc"
io.puts "txt"
}

----------------------------------------------------------


※rename.bat fileと併用
.\doc2txtrnbat.rb
----------------------------------------------------------

io = IO.popen("rename.bat doc txt")
io.close

----------------------------------------------------------


拡張子docからtxtに拡張子を変更する例 (type1〜type2) 

事前設定に以下のような例で実行権限を与える。
%chmod 700 ./doc2txtrncsh.rb

type1
***********************************

%./doc2txtrncsh.rb
(コマンド実行後コマンドの実行が表示される。)

type2
***********************************

>.\doc2txtrnbat.rb
(コマンド実行後コマンドの実行が表示される。)

上記のrename(C Shell),rename.bat(コマンドプロンプト)を
Ruby Scriptに作り直してみる例

※エディタでfileを作る。
./renamemac.rb
----------------------------------------------------------

print "input extension ->"
ext = STDIN.gets
print "input changing extension ->"
chg = STDIN.gets

m = `ls *.#{ext}`.split(' ')

m.each do |i|

m1 = i.split('.')
m1.delete_at(-1)
m2 = m1.join('.')
`mv #{i} #{m2}.#{chg}`

end

puts "done....."

----------------------------------------------------------


.\renamewin.rb
----------------------------------------------------------

ext = ARGV[0]
chg = ARGV[1]


m = `dir /b *.#{ext}`.split("\n")

m.each do |i|

m1 = i.split('.')
m1.delete_at(-1)
m2 = m1.join('.')
`ren #{i} #{m2}.#{chg}`

end

puts "done....."


----------------------------------------------------------


※renamemac.rb file と併用
./doc2txtrnmac.rb
----------------------------------------------------------

IO.popen("renamemac.rb","w") {|io|
io.puts "doc"
io.puts "txt"
}

----------------------------------------------------------


※renamewin.rb fileと併用
.\doc2txtrnwin.bat
----------------------------------------------------------

renamewin.rb doc txt

----------------------------------------------------------



拡張子docからtxtに拡張子を変更する例 (type1〜type2 .etc) 

事前設定に以下のような例で実行権限を与える。
%chmod 700 ./renamemac.rb
%chmod 700 ./doc2txtrnmac.rb

type1
***********************************

%./doc2txtrnmac.rb
(コマンド実行後コマンドの実行が表示される。)

type2
***********************************

>.\doc2txtrnwin.bat
(コマンド実行後コマンドの実行が表示される。)

---------------------------------------------------------------------
※上記のC Shell,コマンドプロンプトで試みたようにtype1〜type2以外にも
複数考えられる。

目次へ

VBScript

○簡単な概略
  • バッチファイルがコマンドプロンプトベースなら
    VBScriptはWinアプリケーションベースのスクリプト。同じようなスクリプトにJScriptがある。

  • ホームページの形式をとってインターネットエクスプローラからリモート操作ができる。

  • ドラッグアンドドロップ等のいくつかのマウスイベントに対応したScriptが書ける。

上記のrenamewin.rb(Ruby)を利用する例

※エディタでfileを作る。
※renamewin.rb file と併用
.\txt2docrn.vbs
----------------------------------------------------------

Set WS = CreateObject("WScript.Shell")
WS.Run "C:\ruby\bin\ruby.exe D:\testbat\renamewin.rb txt doc"

----------------------------------------------------------


拡張子txtからdocに拡張子を変更する例 (type1〜type3) 


type1
***********************************

(txt2docrn.vbs ファイルをダブルクイック)


type2(コマンドプロンプトから入力)
***********************************

>WScript.exe .\txt2docrn.vbs
(コマンド実行後コマンドの実行が表示される。)


type3(コマンドプロンプトから入力)
***********************************

>CScript.exe .\txt2docrn.vbs
(コマンド実行後コマンドの実行が表示される。)

---------------------------------------------------------------------
※コマンドプロンプトから起動できるのでバッチファイルやRubyScriptから
起動することも考えられる。
---------------------------------------------------------------------


目次へ

AppleScript

○簡単な概略
  • Macアプリケーションベースのスクリプト。

  • ドラッグアンドドロップ等のいくつかのマウスイベントに対応したScriptが書ける。

  • MacOSXソフト開発にAction Script Studioというフリーのプログラム言語も使える。

Unixコマンドを利用する例

※ActionScriptエディタで作る。
----------------------------------------------------------

do shell script "/bin/コマンド 引数1 引数2" 

----------------------------------------------------------


※コメント

ActionScriptのようなアプリケーションベースのスクリプトは
コマンドベースではないのでファイル等の扱いに
カレントディレクトリからの相対パスじゃなくて基本的に絶対パスを使用するようだ。


そのため今までの上記の(C Shell,コマンドプロンプト,Ruby)スクリプトは
ファイルの扱いに相対パスを使用していたので
ActionScriptでそのまま再利用するには基本的に無理があるようだ。

ActionScriptで他のスクリプトの併用を考えた場合、
この点に注意したほうが良いようだ。

目次へ
戻る