お世話になっております。
ファイルから特定の単語を抜き出し、新規でファイルを作成し、その中に単語を移行するスクリプトを作成しました。
しかし、単語のファイルが無い場合はエラーを出してくれるのですが、単語のファイルが空ファイル(0バイト)だった時、単語を移行する処理は行います。ですが、結果が空ファイルのままになります。
以下のスクリプトを作成したいのですが、勉強不足でうまくいきません。皆様のお知恵をお貸し下さい。
---------------------------------------------------------------
(1)単語のファイルがある事を確認。
(2)単語のファイルが空ファイルだった場合、移行する処理の中断およびエラー警告メッセージを表示。
(3)空ファイルじゃなかった場合、移行する処理を行う。
---------------------------------------------------------------
VBSを作成する場合、空ファイルが0バイトとして判断するのか、中身が白紙だった場合に判断するのか、という疑問もあって今回の質問をさせて頂きました。
どうか宜しく御願い致します。
No.5ベストアンサー
- 回答日時:
FileSystemObjectのFileExistsメソッドでファイルの存在を確認できますよ
何行目でエラーになるのかも投稿しましょう
以下のコードの字下げには全角スペースですので半角スペースに置換してから使用してください
Dim oFSO, oFile, oText, oWrite
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.FileExists("C:\work.txt") then
Set oFile = oFSO.GetFile("C:\work.txt")
if oFile.Size = 0 then
WScript.Echo "空のファイルです"
else
' 単語処理
Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True)
end if
else
WScript.Echo "『C:\work.txt』ファイルが存在しません"
end if
redfox63さん、ご回答有難う御座います。
エラーが出る原因がわかりました。私のコード確認不足で、文字が一部欠けていた事がエラーを吐く原因となっておりました。よく確認もせず申し訳ありませんでした。
無事に問題も解決し、やりたい事がようやく出来ました。
本当に有難う御座いました。もっと、VBSについて勉強していきます。
感謝致します。
No.4
- 回答日時:
たぶん ; でエラーになっているのでしょう
VBSの場合ほとんど;は使いませんので
本業がC/C++屋なので たまに行末に;をつけてしまいます
Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True)
でいいはずです …
最初のDim のお尻の『;』も削除ですね m(__)m
>スクリプトが別々に作成されているのであれば、単語処理のスクリプト
>をCallで呼び出せば出来ると想定しています
VBSはバッチファイルのように外部ファイルにCallで移行する機能はありません
VBSのCallステートメントは あくまで自分のファイル内の関数やプロシージャを呼ぶためのものです
# エラーが起きるのであればその内容を投稿しましょう
返信が遅れてすみませんでした。
あれからredfox63が書き込みを下さったコードを利用して、スクリプトを作成しておりました。ですが、まだまだ勉強不足で質問があります。
以下のコードを走らすと、「オブジェクトがありません。:"」と表示されてしまい、スクリプトエラーが出てしまいます。どうしてなのでしょうか?
>Dim oFSO, oFile, oText、oWrite
>Set oFSO = CreateObject("Scripting.FIleSystemObject")
>if oFSO.FileExists("C:\work.txt") then
> Set oFile = oFSO.GetFile("C:\work.txt")
> if oFile.Size = 0 then
> WScript.Echo "空のファイルです"
> else
> ' 単語処理
> Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True)
> end if
>end if
あともう一点あります。今回の質問は空ファイルが0バイトの時にif文で分岐をするというものだったのですが、空ファイルを調べる前に「ファイルが既存で無い」というのを新たに追加する場合は、以下のようにすれば良いのでしょうか?
if Filename("C:\work.txt") = False then
end if
else if oFSO.FileExists("C:\work.txt") then
Set oFile = oFSO.GetFile("C:\work.txt")
if oFile.Size = 0 then
WScript.Echo "空のファイルです"
else
' 単語処理
Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True)
end if
end if
宜しく御願い致します。
No.3
- 回答日時:
さて、本日、No1さんの回答を手掛かりに生まれて初めて vbs とやらにチャレンジ。
すったもんだしましたが、何とか動作しています。
で、私なら、以下のようにします。
※正真正銘の初めてのコード。参考程度にされてください!
Dim lngSize
lngSize=FileSize("C:\Temp\c.bat")
Select Case lngSize
Case -1
WScript.Echo "該当するファイルはありません"
Case 0
WScript.Echo "空のファイルです"
Case else
WScript.Echo "処理します!"
End Select
Function FileSize(ByVal FileName)
Dim fso
Dim fil
Dim lngSize
IF FileExists(FileName) Then
Set fso = CreateObject("Scripting.FIleSystemObject")
Set fil = fso.GetFile(FileName)
lngSize= fil.Size
Else
lngSize=-1
End If
FileSize = lngSize
End Function
Public Function FileExists(ByVal FileName)
Dim fso
Set fso = CreateObject("Scripting.FIleSystemObject")
FileExists = fso.FileExists(FileName)
End Function
No.2
- 回答日時:
「中身が白紙」というのが具体的にどういう状態なのかよくわかりませんが、
ファイルが存在するとか、そのサイズを知りたいという話なら
次のページのサンプルを見れば参考になるのではないかと。
2.12 ファイルの情報を見る - VBScript & JScript(JavaScript) Tips for WSH
http://www.happy2-island.com/vbs/cafe02/capter00 …
ご回答有難う御座います。
>「中身が白紙」というのが具体的にどういう状態なのかよくわかりま
>せんが、
新規で作成したファイルの事で、中身が何も書かれていない状態を「中身が白紙」という表現をさせて頂きましたが、文章を端折ってしまってすみませんでした。
サンプルを拝見させて頂きました。私もこのページを見ていたのですが、最初のパラメタの部分でつまづいてしまったのです。
すごく初歩的なところなのですが、パラメタとは何かのテキストだったりプログラムの情報の事なのでしょうか?それとも、テキスト名やファイル名をobjParmで参照しているのでしょうか?
パラメタが1コだった場合のイメージがどうしても沸かないのです・・・
No.1
- 回答日時:
たぶん FSOを使って入出力をしているのであろうと思います
であるなら Fileオブジェクトを取得して Sizeプロパティを参照してみましょう
Dim oFSO, oFile, oText、oWrite;
Set oFSO = CreateObject("Scripting.FIleSystemObject")
if oFSO.FileExists("C:\work.txt") then
Set oFile = oFSO.GetFile("C:\work.txt")
if oFile.Size = 0 then
WScript.Echo "空のファイルです"
else
' 単語処理
Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True);
end if
end if
といった具合でしょう
ご回答有難う御座います。
コードを少しいじらせて頂いて、無事にテストする事が出来ました。
また一つ勉強になり、大変参考になりました。
すみません、一点だけアドバイスを頂きたいのですが、redfox63さんが記載して下さったプログラムの「else」後について疑問があります。
> ' 単語処理
> Set oWrite = oFSO.CreateTextFile("C:\Write.txt",True);
set objWriteの行に単語処理のスクリプトを全部書き出す事は可能でしょうか?
何がやりたいかというと、単語処理のスクリプトを「else」後に誘導させたいのですが、スクリプトエラーが起こってしまって思うように出来ません。
何か方法はありますでしょうか?
スクリプトが別々に作成されているのであれば、単語処理のスクリプトをCallで呼び出せば出来ると想定しています。
ただ、1つにまとめたい場合は「else」後と単語処理の前に紐付けをする方法が調べたのですが、ヒントがありませんでした。
宜しく御願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- フリーソフト 日本語に対応していないPCゲームの日本語化ファイルをダウンロードしてウィルスに感染するケースは? 1 2023/07/06 21:32
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- その他(ソフトウェア) 特定のpremiere proのファイルが開けなくなりました。 1 2022/11/16 12:31
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) エクセル 任意の列数で分割する方法 3 2022/07/31 14:58
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
vbsでテキストファイル内の文字列検索
Visual Basic(VBA)
-
-
4
プロセスIDの取得方法について
Visual Basic(VBA)
-
5
VB6側からテキストファイルをクリアにする方法
Visual Basic(VBA)
-
6
split関数で区切り文字がない場合
Visual Basic(VBA)
-
7
VBでExcelが起動されているか知りたい
Visual Basic(VBA)
-
8
VBScriptで引数を省略したい場合
その他(プログラミング・Web制作)
-
9
ftpコマンド出力結果の取得
その他(プログラミング・Web制作)
-
10
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
11
VB6でのファイル作成方法
Visual Basic(VBA)
-
12
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
13
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
14
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
15
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
16
VB6でのファイルサイズ取得について
Visual Basic(VBA)
-
17
VBScriptで、ファイルから任意の行のみ取り出す方法について
その他(プログラミング・Web制作)
-
18
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
19
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
20
エクセルVBAのIF文の否定の複数条件
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
2GB以上のファイルを扱う方法
-
IMEのモードを強制的に変えるには
-
VBAで、JPG写真の撮影日時を読...
-
リソースファイルを認識してく...
-
ファイルのアクセス権限について
-
Eclipseで検索ができなくなった
-
HTMLテキストリンクでExcelファ...
-
月々の更新回数を調べるには?
-
ファイル更新日取得
-
MPEG1とMPEG2を見分ける
-
ファイル内容を比較する方法
-
HTMLまたはJavaScriptでフ...
-
JavaでPDFファイルに変換するに...
-
VBAでフォルダ内の全てのcsv...
-
main関数のコマンドライン引数...
-
画像ファイルに拡張子がjpgのフ...
-
PHPからベーシック認証のかかっ...
-
VB6.0のメモリリークについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
HTMLテキストリンクでExcelファ...
-
Eclipseで検索ができなくなった
-
HTMLまたはJavaScriptでフ...
-
【VBA】複数CSVの特定範囲を1つ...
-
ディレクトリのサイズの取得
-
サイトマップにサブドメインを...
-
Javaのファイルダウンロードに...
-
リソースファイルを認識してく...
-
VBS ファイルマージ処理
-
C++.NET 2003 「空のドキュメ...
-
VB6.0のメモリリークについて
-
C++によるファイル送受信プログ...
-
RPGでメッセージファイル利用
-
Perlで2GBを超える大きいファイ...
-
VB6でTIFF図のプロパティを...
-
BASP21のファイルアップロード...
-
VB2008 iniファイルの全セクシ...
おすすめ情報