【VBScript】ディレクトリ内のファイルを、リストを読み込んで分割
【VBScript】ディレクトリ内のファイルを、リストを読み込んで分割
■プログラム及びファイルに関する備考
.\test\ = 分割を行いたいファイルが格納されたディレクトリ
Dir_FileList.txt = testディレクトリ内のファイルをリスト化したもの。
相対パスにて、1行ずつ改行して記述する。
■やりたい事
Dir_FileList.txtという、.\test\内に配置されたファイルをリスト化したtxtを
1行ずつ読み込み、読みこんだファイルに対し、10行毎に分割処理を行いたいと思っています。
分割したファイルは、分割元のファイルが格納されたディレクトリと同じ、.\test\ディレクトリに作成し、
分割前の元ファイルを最後に削除するという処理をリストに書かれた全てのファイルに対して行いたいです。
下記のようにコーディングをしたのですが、
どうも「Do Until ( fILE1.AtEndOfStream )」のループ文の処理が行われていない?ようで、
testディレクトリ内部のファイルが分割されません。
色々試したのですが、VBScriptを触るのは初めてでなかなか上手くいきませんでした。
どこが間違っていて、どのように修正すれば動くようになるでしょうか?
お手数ですが、ご教授をお願い致します。
----------------------------------------
Option Explicit
Dim flReadFSO, flReadFSO2, fFolder, fILE, flrSubFolder
Set flReadFSO = CreateObject("Scripting.FileSystemObject")
Set flReadFSO2 = WScript.CreateObject("Scripting.FileSystemObject")
Set fFolder = flReadFSO2.GetFolder(".")
Dim name1, fILE1
name1 = fFolder & "\Dir_FileList.txt"
Set fILE1 = flReadFSO.OpenTextFile(name1)
Dim oneLineTxt
oneLineTxt =""
Dim FSO
set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Do Until ( fILE1.AtEndOfStream )
oneLineTxt = fILE1.ReadLine
WScript.Echo oneLineTxt
arg = ".\test\test01.txt"
set fin = FSO.OpenTextFile(arg, 1)
fbn = FSO.GetBaseName(arg)
fen = FSO.GetExtensionName(arg)
nf=0
set fout = FSO.OpenTextFile(".\test\" & fbn & "_" & nf & "." & fen, 2, true)
nl=0
Do While Not fin.AtEndOfStream
fout.WriteLine fin.ReadLine
nl=nl+1
if nl>9 then
fout.Close
nf=nf+1
if nf>9 then exit do
set fout = FSO.OpenTextFile(".\test\" & fbn & "_" & nf & "." & fen, 2, true)
nl=0
end if
Loop
fin.Close
FSO.DeleteFile arg, True
Loop
fILE1.Close
----------------------------------------
補足
以下に記述を変更しました。 Dim cnt As Long Dim intFileNo As Integer Dim strYubin() As String Dim strAddre() As String Dim strNamae() As String cnt = 0 '使用可能なファイルナンバーを取得 intFileNo = FreeFile 'シーケンシャル入力モードでオープン Open gFilePass & "\" & str_FileName For Binary As #intFileNo If EOF(intFileNo) = True Then MsgBox "ファイルにデータがありませんでした。", vbExclamation, "ファイルデータ内容" Close #intFileNo Exit Sub End If cnt = 0 'EOF(intFileNo)が True になるまで実行 Do Until EOF(intFileNo) cnt = cnt + 1 '件数をカウント '変数を1個づつ追加宣言 ReDim Preserve strYubin(cnt) As String ReDim Preserve strAddre(cnt) As String ReDim Preserve strNamae(cnt) As String 'データを各変数に読込 Input #intFileNo, strYubin(cnt), strAddre(cnt), strNamae(cnt) Loop Close #intFileNo が、 Input #intFileNo, strYubin(cnt), strAddre(cnt), strNamae(cnt) の行で、 エラー番号62: これ以上ファイルにデータがありません。 とエラーが出てしまいます。 何が間違っているんでしょうか? 明確な指摘を下さい。