ファイル操作
フォルダを作成する
ファイルを作成し、好きな言葉を入力する

2008年03月02日

ファイルを作成し、好きな言葉を入力する

option explicit

Const MKDIR = "C:\temp\test\"
Const TestFile = "TEST.txt"
Const ForReading = 1 '読み込み
Const ForWriting = 2 '書き込み
Const ForAppending = 8 '追記

Dim ObjFso
Dim InputMSG
Dim TestResult

Set ObjFso=WScript.CreateObject("Scripting.FileSystemObject")

If ObjFso.FolderExists(MKDIR) = False Then
ObjFso.Createfolder(MKDIR)
End If

if ObjFso.fileexists(MKDIR & TestFile) = false Then
ObjFso.Createtextfile(MKDIR & TestFile)
End If

Set TestResult = ObjFso.Opentextfile(MKDIR & TestFile,ForAppending)

InputMSG = InputBOX("好きな文字を入力!","テスト用書き込みダイアログ","TEST")

TestResult.write Cstr(InputMSG) & vbcrlf

Set ObjFso = Nothing
Set Dim InputMSG = Nothing
Set Dim TestResult = Nothing
posted by 管理人 at 02:42| Comment(11) | TrackBack(0) | VBS | このブログの読者になる | 更新情報をチェックする

2008年02月28日

フォルダを作成する

FileSystemObjectオブジェクトは、ドライブ・フォルダ・ファイルなどを操作できる
オブジェクトです。
FileSystemObjectオブジェクトを利用するには、CreateObjectメソッドを実行してFileSystemObjectオブジェクトのインスタンスを作成し、そのインスタンスに対して
プロパティの設定やメソッドを実行します。
???…とまぁ、説明するとこんな感じなんだけど、始めてやる場合はまるっきり
意味が分からない!
私も分からなかった。
実際にやってみましょう
option explicit

Const MKDIR = "C:\temp"

Dim ObjFso

Set ObjFso=WScript.CreateObject("Scripting.FileSystemObject")
ObjFso.Createfolder(MKDIR)

set ObjFso = Nothing
これでフォルダが作成することができましたが、このままだと2度目に同じフォルダを
作成使用とすると以下のエラーメッセージが表示されます。
「既に同名のファイルが存在しています。」
そこで、少し判定処理を組み込んでみましょう。
option explicit

Const MKDIR = "C:\temp"

Dim ObjFso

Set ObjFso=WScript.CreateObject("Scripting.FileSystemObject")

If ObjFso.FolderExists(MKDIR) = False Then
ObjFso.Createfolder(MKDIR)
End If

set ObjFso = Nothing
このように、「フォルダが存在したらフォルダを作成する行を無視する!」
という処理を9〜11行目に組み込む事によってエラーは出なくなります。
posted by 管理人 at 02:29| Comment(0) | TrackBack(0) | VBS | このブログの読者になる | 更新情報をチェックする

2008年02月26日

For〜 そのT

For〜文の基本的な例

option explicit

Dim Num,Ans,i

Num = 5

For i = 1 To 9
Ans = 0
Ans = Num * i
wscript.echo Ans
Next

set Ans = Nothing
set Num = Nothing
set i = Nothing
これが基本的な文法ですが、For〜は入れ子にすることができす。
・・・ん? 入れ子!?
普通に生活していると使うことはないので始めは分かりませんでしたが、
要するにFor〜の中に幾つでもFor〜を書くことができる!
ということです。

次に、入れ子で「掛け算九九」を作って見ましょう
option explicit

Dim Num_A,Num_B,Ans

Num_A = 0
For Num_A = 1 To 9
Num_B = 0
For Num_B = 1 To 9
Ans = Num_A * Num_B
wscript.echo Ans
Next
Next

set Ans = Nothing
set Num_A = Nothing
set Num_B = Nothing

<注意>これを実行するときは、コマンドプロンプトを使用し先頭に「cscript」を付けて行ってください。でないと、ポップアップメッセージが81こ!も表示されてしまいます。
posted by 管理人 at 00:16| Comment(0) | TrackBack(0) | VBS | このブログの読者になる | 更新情報をチェックする

2008年02月19日

VBSでの計算

VBSで計算をしてみる!


option explicit

'変数初期化
Dim number_A
Dim number_B
Dim number_C
Dim Ans1,Ans2,Ans3

'変数設定
number_A = 10
number_B = 5
number_C = 2

'計算セクション
Ans1 = number_A + number_B
Ans2 = number_A * number_B / number_C
Ans3 = Ans2 * number_C

'計算表示
Wscript.echo("(Ans1)10+5=" & Ans1 &_
VBCrLf & "(Ans2)10*5/2=" & Ans2 &_
VBCrLf & "(Ans3)10*5/2*2=" & Ans3)

'後処理
Set number_A = Nothing
Set number_B = Nothing
Set number_C = Nothing
Set Ans1 = Nothing
Set Ans2 = Nothing
Set Ans3 = Nothing


VBscriptの演算子
演算子演算の種類左図の通り一般的な「演算子」となっており、演算の規則も算数と同じで"()"なども使用することができる。
+足し算
-引き算
*掛け算
/割り算
mod割り算の余り
割り算の商(整数部分)
^ベキ乗
-マイナス(符号)
posted by 管理人 at 01:10| Comment(0) | TrackBack(0) | VBS | このブログの読者になる | 更新情報をチェックする

2007年07月24日

ドメインに参加したサーバの時間を確認・変更する

ドメインに参加した現地のサーバの時間の確認方法です。
また、このコマンドで時間を変更することも出来ます。

net time [\\コンピュータ名 | /DOMAIN[:ドメイン名]

確認するだけなら[Enter]を押下し、
時間を変更する場合は、
「hh:mm」形式で時間入力後[Enter]を押下する。
posted by 管理人 at 00:27| Comment(0) | TrackBack(0) | 小物(bat) | このブログの読者になる | 更新情報をチェックする

2007年06月12日

FOR 繰り返し処理(3) ファイル名 再帰検索

今回は"/R"のオプションを使用して、ファイル名をサブフォルダも含め検索するbatを作ってみましょう。

※下準備として、適当なワークフォルダを作成してください。
tree.bmptest_dir.bmp

左)フォルダ構成
右)配下ファイル

ちょっと見辛いですが、今回はこんな感じで作成しました。

STEP1 FOR_3_1.bat
c:\test配下のファイルを全て表示させてみる。
@echo off

for /r c:\test %%a in (*) do echo %%a
1."c:\test"はフォルダ指定なのでなくても大丈夫です。
 その場合はコマンドプロンプトで実行する際"CD"コマンドを使用し
 カレントディレクトリを移動してから実行して下さい。

STEP2 FOR_3_2.bat
ファイル名を指定しそのファイル名のみを表示させる
@echo off

rem ファイル名検索再帰処理
:SEC00000
for /r c:\test %%a in (*) do (set filename=%%a) && (call :SEC00100)
goto SECEXIT

rem ファイル名表示処理
:SEC00100
if %filename%==c:\test\first.txt (echo %filename%) & (goto :eof)

rem 変数開放
:SECEXIT
set filename=

STEP3 FOR_3_3.bat
"引き数1"にファイル名を入力し"引き数2"に別のファイル名を入力しリネームをかける。
@echo off

rem 変数設定
:SEC00000
set first=%1
set second=%2

rem ファイル名検索再帰処理
:SEC00100
for /r c:\test %%a in (*) do ((set fullpath=%%a) & (set filename=%%~xna))&& (call :SEC00200)
goto SECEXIT

rem ファイル名存在確認
:SEC00200
if %filename%==%first% goto SEC00300
goto :eof

rem リネーム処理
:SEC00300
ren %fullpath% %second%
goto :eof

rem 変数開放
:SECEXIT
set filename=
set first=
set second=
1.コマンドプロンプトを開き以下のように実行して下さい。
 [ドライブ][パス]FOR3-3.bat first.txt 1-1.txt
 ※バッチ名と引き数1,2の間に"スペース"を入れるの忘れないで!
2.「%%~xna」は、フルパスで変数に格納されていた物を "ファイル名"のみにする
 "オプション構文"です。

出来ましたか?
リネームが終わった後に先ほど作成した、FOR1-1.batを実行すると
一番上にあった"first.txt"が"1-1.txt"に変化しているのが分かります。
posted by 管理人 at 01:27| Comment(0) | TrackBack(0) | A〜H | このブログの読者になる | 更新情報をチェックする

2007年06月09日

FOR 繰り返し処理(2)数字の計算

今回は"/L"のオプションを使用し、数字を表示させてみましょう。

以下をメモ帳で編集し拡張子を"bat"に変えコマンドプロンプトで実行して下さい。

@echo off

for /l %%a in (0,1,9) do echo %%a

0〜9が1行ずつ表示されましたよね?
ここではこの"()"が重要な役割を果たしています。

0=最初に表示される数字
1=幾つ数値を増やすか("━"を使用すれば減らすことも出来る)
9=最後の数字
@echo off

rem 変数設定
set total=0
set count=0

rem 第1引数
:SEC00100
for /l %%a in (1,1,9) do (set first=%%a) && (call :SEC00200)
goto SECEXIT

rem 第2引数
:SEC00200
for /l %%b in (1,1,9) do (set second=%%b) && (call :SEC00300)
goto :eof

rem 表示処理
:SEC00300
if %count%==9 (echo. >>for_3.txt) & (set count=0)
set /a total=%first%*%second%
echo %total% >>for_3.txt
set /a count=%count%+1
goto :eof

rem 変数開放
:SECEXIT
set count=
set first=
set second=
set total=

と、こんな感じで九九を計算してみたんですが、ちょっと縦長で見辛いなぁ
確か横表示するコマンドがあったような気がするんだけど。。。
posted by 管理人 at 03:33| Comment(0) | TrackBack(0) | A〜H | このブログの読者になる | 更新情報をチェックする

SET(1) 変数の計算

SETコマンドは変数を設定します。

今回はこのコマンドを使用し「変数の計算」を行って行きます。


コマンドプロンプトを起動し以下の操作を実行して下さい。
1.SET HENSUU=5
2.ECHO %HENSUU%
"5"が表示されましたか?


では、この"HENSUU"に"1"を足してみましょう。
1.SET HENSUU=5+1
2.ECHO %HENSUU%
"5+1"が表示されてしまいました。。。

実は変数の計算はオプションに"/A"を付けてあげないと「数式」として
認識が出来ません。


では、オプションを使用しもう一度変数の計算を行ってみましょう。
1.SET /A HENSUU=5+1
2.ECHO %HENSUU%
今回は"6"が表示されましたよね?
勿論この式には四則演算が可能なので、"*,/.+,-"を使用することができます。
posted by 管理人 at 01:13| Comment(0) | TrackBack(0) | Q〜Z | このブログの読者になる | 更新情報をチェックする

2007年06月07日

一定の時間処理を止める

コマンドプロンプトに"PAUSE"と言うコマンドはありますが、
このコマンドにはオプションがなく、処理を止めることしか出来ません
そこで"VBS"を組み合わせて処理を一定時間停止させるバッチファイル
を作ってみましょう。

一定時間処理を止める
@echo off

REM pause.bat [秒数]
set /a wtime=(%1+0)*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
※オプションに止めたい"秒数"を指定してください
posted by 管理人 at 00:54| Comment(0) | TrackBack(0) | 小物(bat) | このブログの読者になる | 更新情報をチェックする

2007年06月02日

FOR 繰り返し処理(1)

"for 〜"は処理を繰り返し行います。

?コマンドプロンプトでFOR文をしようする場合は、変数""は1個でいいのですが、 バッチで使用する場合は変数が"%%"と2個になるので注意しましょう。

?変数は大文字と小文字を区別しますので、a〜z,A〜Zの最大52文字使用することが出来ます。

オプション
/Dディレクトリ操作
/Rサブディレクトリ操作
/L数値操作
/Fファイル操作

STEP1
※Cドライブで行うとファイルが多いのでウザイです。
適当なフォルダに移動して実行してください。
フォルダの中のファイルを全て表示させる
@echo off

for %%i in (*) do echo %%i

STEP2
フォルダの中のフォルダを全て表示させる
@echo off

for /d %%i in (*) do echo %%i


以上の事で出来ることと言えば、ネットワークで繋がった
複数のPCに複数の資源を送る時に便利です。

応用編
※適当なフォルダにテストでコピーする資源を予め作成してください。
※今回は複数の資源をコピーする場合です。
@echo off

rem 変数設定
:SEC000
set indir=c:\temp\indir\
set outdir=c:\temp\outdir\

rem フォルダ存在確認
:SEC100
if not exist %outdir% (md %outdir%) else (goto SEC200)
goto SEC200

rem コピー処理
:SEC200
cd %indir%
for %%a in (*) do copy /y %indir%%%a %outdir%
if not errorlevel 0 goto SECEXIT
goto :eof

rem 変数開放
:SECEXIT
set indir=
set outdir=
posted by 管理人 at 02:28| Comment(0) | TrackBack(0) | A〜H | このブログの読者になる | 更新情報をチェックする