VBScript Sample 1
Option Explicit
'■テキストファイルの文字を全て大文字に変換して出力する
Option Explicit
Dim FSO, Fl, Ts, str
Set FSO = Wscript.CreateObject("Scripting.FileSystemObject")
Set Fl = FSO.GetFile("msdos.csv")
Set Ts = Fl.OpenAsTextStream(1, -2)
str = Ts.ReadAll
WScript.Echo UCase(str)
'■ディレクトリ内のファイルをファイル名の昇順で連番でりネームする
'FileNameSetter.vbs
Option Explicit
Dim strtNum
Dim FSO
Dim file
Dim myTitle
'◇動作ディレクトリ◇
Const exeDir = "C:\Users\yama\Desktop\NameSetter\"
'◇ファイル名 名付け対象外のファイル◇
Private pExcptName(4)
pExcptName(0)="a.txt"
pExcptName(1)="b.txt"
pExcptName(2)="c.txt"
pExcptName(3)="d.txt"
pExcptName(4)="e.txt"
'...
'------------------------------------------------
Dim objFn
Set objFn = New Fn
If objFn.MePath <> exeDir Then
MsgBox _
exedir & "aaaa " & objfn.MePath & " 内で動作します。" & _
"実行ディレクトリを変更する場合は、9行目の指定を変更して下さい", _
vbInformation,"指定ディレクトリのみで動作します"
WScript.Quit
End If
myTitle=WScript.ScriptName
strtNum = _
InputBox( _
"スタートの起案番号を入力します。" & vbNewLine & _
"スクリプト内で指定されたファイル以外を、" & vbNewLine & _
"ファイル名順に連番付きにリネイムします")
If IsNumeric(strtNum) = False Then
MsgBox "数値を指定して下さい", vbInformation,myTitle
WScript.Quit
End If
If strtNum = vbNullString Then
MsgBox "数値を指定して下さい", vbInformation,myTitle
WScript.Quit
End If
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
objFn.mStartNumber = strtNum
'動的配列に対象ファイル名を格納していく
Dim fileNames, n
fileNames=Array
For Each file In FSO.GetFolder(objFn.MePath).Files
If objFn.IsTargetFile(file.Name) Then
n = UBound(fileNames) + 1
ReDim Preserve fileNames(n)
fileNames(n) = file.Name
End If
Next
If UBound(fileNames) = -1 Then
MsgBox "対象のファイルがありません", vbInformation, myTitle
WScript.Quit
End If
'配列をファイル名で昇順並び替え
objFn.qSort fileNames
'配列並び順にファイル名をつけ直す
Call objFn.setName(fileNames)
Set objFn=Nothing
Set FSO=Nothing
Class Fn
Public mStartNumber
'自スクリプトの親フォルダのフルパスを返す
Function MePath
Dim pth
pth=WScript.ScriptFullName
pth=Left(pth,Len(pth)-Len(WScript.ScriptName))
MePath=pth
End Function
'対象ファイルか否かを返す
Function IsTargetFile(fileName)
Dim i
Dim judge
For i=0 To UBound(pExcptName)
If pExcptName(i)=fileName Then
IsTargetFile=False
Exit Function
End If
Next
'If UCase(Right(filename,4))=".PDF" Then
If UCase(Right(filename,4))=".TXT" Then
judge=True
Else
judge=False
End If
IsTargetFile=judge
End Function
Sub qSort(ary)
quicksort ary,0,UBound(ary)
End Sub
'昇順並び替え
Private Sub quicksort(Array,first,last)
Dim pivot,A,Z,tmp
pivot=Array(first)'あてずっぽうの中央値
A = first:Z = last
Do
While Array(A) < pivot:A = A + 1:Wend
While Array(Z) > pivot:Z = Z - 1:Wend
If A>=Z Then Exit Do
tmp = Array(A):Array(A)=aray(Z):Array(Z)=tmp
A = A + 1:Z = Z - 1
Loop
If first<A-1 Then quicksort Array,first,A-1
If Z+1 < last Then quicksort Array,Z+1,last
End Sub
'名前をつける
Sub setName(arry)
On Error Resume Next
Dim i,f,pth,num
Const str1= "開示請求書等13-"
Const str2 = ".pdf"
Const str3= "(不開示)"
pth = MePath
num = mStartNumber
For i=0 To UBound(arry)
MsgBox pth & arry(i)
Set f=FSO.GetFile(pth & arry(i))
If f.Size > 130000 Then
f.Name=str1 & myNumFrmt(num) & str2
Else
f.Name=str1 & myNumFrmt(num) & str3 & str2
End If
num=num+1
Next
If Err.Number<> 0 Then
MsgBox _
Err.Number& ":" & _
Err.DescriptionvbCritical,WScript.ScriptFullName
WScript.Quit
End If
End Sub
'数字のフォーマット
Private Function myNumFrmt(number)
Dim L
L = Len(CStr(number))
If L < 3 Then
myNumFrmt = String(3-L,"0") & CStr(number)
Else
myNumFrmt = CStr(number)
End If
End Function
End Class
yamaV1.02β