VBSであるファイルを1行ずつ読み込み、その読み込んだ値を
ある別のファイルにリダイレクトしたいのですが、
どのように書けばよいか教えてください。
下記のように、echoでは出すことができるのですが、
ファイルにリダイレクトというのができません。
よろしくお願いします。
==== sample shell =========================
Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
Set objFile = objFSO.OpenTextFile("d:\dr1.txt")
If Err.Number = 0 Then
Do While objFile.AtEndOfStream <> True
WScript.Echo objFile.ReadLine
Loop
objFile.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFile = Nothing
Set objFSO = Nothing
============================================================
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> スペースで区切られた2番目のカラムだけを取り出し、別のファイルに書き込むということをしたいのです。
用途が気になりますが、それだけでしたらか+α追加するだけでいいですね。
---------------------------------
Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFileR ' ファイル読み込み用
Dim objFileW1st ' ファイル読み込み用
Dim objFileW2nd ' ファイル読み込み用
Dim i
Dim TempStr
Dim LineDatahash '行データを空白でハッシュ
Const vbWriteOnly = 2
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
Set objFileR = objFSO.OpenTextFile("d:\dr1.txt")
Set objFileW1st = objFSO.OpenTextFile("d:\dr2.txt", vbWriteOnly ,True)
Set objFileW2nd = objFSO.OpenTextFile("d:\dr3.txt", vbWriteOnly ,True)
If Err.Number = 0 Then
Do While objFileR.AtEndOfStream <> True
TempStr = objFileR.ReadLine
LineDatahash = Split(TempStr)
If UBound(LineDatahash) = 1 then
objFileW1st.writeline LineDatahash(0)
objFileW2nd.writeline LineDatahash(1)
ElseIf UBound(LineDatahash) >= 2 then
objFileW1st.writeline LineDatahash(0)
For i = 1 to UBound(LineDatahash)
objFileW2nd.write LineDatahash(i)
Next
objFileW2nd.write vbNewLine
Else
objFileW1st.writeline TempStr
objFileW2nd.writeline "[No Data]"
End If
Loop
objFileR.Close
objFileW1st.Close
objFileW2nd.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFileR = Nothing
Set objFileW1st = Nothing
Set objFileW2nd = Nothing
Set objFSO = Nothing
---------------------------------
スペース区切りで3個以上データがあったときのことはあまり考慮していませんが、こんなもんでしょうか。
上記では配列を使用していますが、学習のためではなく実務のためのVBSでしたら適当に普通の変数に(扱いやすいように)置き換えてください。
No.1
- 回答日時:
「ファイルにリダイレクト」とはファイルに書き出しをしたいということでしょうか?それでしたらとりあえず以下の通りに……
---------------------------------------
Option Explicit
On Error Resume Next
Dim objFSO ' FileSystemObject
Dim objFileR ' ファイル読み込み用
Dim objFileW ' ファイル読み込み用
Const vbWriteOnly = 2
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
Set objFileR = objFSO.OpenTextFile("d:\dr1.txt")
Set objFileW = objFSO.OpenTextFile("d:\dr2.txt", vbWriteOnly ,True)
If Err.Number = 0 Then
Do While objFileR.AtEndOfStream <> True
objFileW.writeline objFileR.ReadLine
Loop
objFileR.Close
objFileW.Close
Else
WScript.Echo "ファイルオープンエラー: " & Err.Description
End If
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objFileR = Nothing
Set objFileW = Nothing
Set objFSO = Nothing
------------------------------------------
ファイルを開いたアプリケーションにリダイレクト? という意味でしたら、WScript.shellなどで標準出力することになります。って、あんまそんなことしませんか……
早速の回答ありがとうございました。実際に動かしてみて、正常な動作をしました。大変、勉強になりました。
>>ファイルを開いたアプリケーションにリダイレクト?
→おっしゃるとおりで、最終的にやってみたい事は、
開いたファイルから1行ずつ取り出すのですが、さらに、スペースで区切られた2番目のカラムだけを取り出し、別のファイルに書き込むということをしたいのです。
こちらも教えていただけたら幸いです。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
ドラッグアンドドロップでファ...
-
csvファイルを開かずに文字を検...
-
Javascript で INI の読み書き
-
分割コンパイルの#defineについて
-
テキストファイルの最終行を削...
-
ファイルを記録してあるセクタ...
-
クリップボードから任意のファ...
-
C言語のfopenについて教えてく...
-
Excelファイル、セルの読み書きで
-
バッチで118項目のCSVを処理し...
-
COBOLでの可変長定義について
-
エクセルVBAでフォルダ内の重複...
-
SGファイルって何ですか?
-
BI書、FD書 とは
-
VB.NETによるプロセス間通信
-
WAVファイル同士の結合が可...
-
ハッシュの計算時間について
-
ファイルの結合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dataファイルをxtxファイルにす...
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
大きいサイズのテキストファイ...
-
グローバル変数のよくない使い...
-
fopenできる上限の変更
-
ハッシュの計算時間について
-
VBに、Cのincludeのようなもの...
-
CSVファイルへの保存の際、デー...
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
iniファイルに追記がしたいです。
-
ドラッグアンドドロップでファ...
-
SGファイルって何ですか?
-
同じ名前のファイルを作った場...
-
アドレス帳WABファイルをサンダ...
-
ダイアログボックスで複数フォ...
-
「VBScript」ADODB.Streamにお...
おすすめ情報