質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

1回答

2437閲覧

vbsで文字を置換したいのに全部消える?

fyo

総合スコア0

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/03/05 10:03

編集2021/03/06 10:06

前提・実現したいこと

vbsで複数のphpファイルの内容を一括で、そのファイル自身の名前に変更するプログラムを作りたいです。

以下のようなコードを作成しましたが、

発生している問題・エラーメッセージ

「ファイルの最後を超えた入力を行おうとしました。」って出たので0バイトのファイルを消し、そしたら「プロシージャの呼び出し、または因数が不正です。」って出て、それでも実行すると0バイトのファイルが増える(ファイルの中身が消えていく)エラーが発生中です

該当のソースコード

vbs

1Option Explicit '変数の宣言を省略させないためのものです。 2 3Const TARGET_FOLDER = "d:..." '※フォルダを指定 4Const REPLACE_FROM = "so" '※置換前文字列 5Dim REPLACE_TO ' 置換後文字列 6 7Const ForReading = 1 '読み込み 8Const ForWriting = 2 '書きこみ(上書きモード) 9Const ForAppending = 8 '書きこみ(追記モード) 10 11Dim strFilePath, infile, outfile, strData, strExt '変数を宣言 12Dim objFSO, objFolder, objFile, objSubFolder, objTXT '変数を宣言 13Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") 'ドライブ・フォルダ・ファイルなどを操作できるオブジェクトです。 14Set objFolder = objFSO.GetFolder(TARGET_FOLDER) 15 16For Each objFile In objFolder.Files 17 strFilePath = objFSO.BuildPath(TARGET_FOLDER, objFile.Name) 18 strExt = objFSO.GetExtensionName(objFile.Name) 19 20 If objFile.Size > 0 And LCase(strExt) = "php" Then 21 Set infile = objFSO.OpenTextFile(strFilePath,ForReading) 22 strData = infile.ReadAll 23 infile.Close 24 Set infile = Nothing 25 Set outfile = objFSO.OpenTextFile(strFilePath,ForWriting) '(上書き) 26 REPLACE_TO = objFile.Name '※自身のファイル名 27 outfile.Write Replace(strData,REPLACE_FROM,REPLACE_TO) 28 outfile.Close 29 Set outfile = Nothing 30 End If 31Next 32 33Set objFolder = Nothing 34Set objFSO = Nothing 35 36MsgBox "終了", vbInformation

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

vbs

1If objFile.Size > 0 Then

とかで読み飛ばしたら何とかなりますか?

投稿2021/03/05 10:23

編集2021/03/05 10:27
jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fyo

2021/03/05 10:33

ありがとうございます!やってみます。
fyo

2021/03/05 10:38

すみません、できませんでした。
jinoji

2021/03/05 10:48

If objFile.Size > 0 And LCase(strExt) = "php" Then
fyo

2021/03/06 10:04

ありがとうございます!27行目9文字目プロシージャの呼び出し、または因数が不正です。と出ました。
jinoji

2021/03/06 10:24

対象ファイルがUTF-8ということなので、 OpenTextFile をやめて、 ADODB.Stream を使った処理に変えるとかですかね。
fyo

2021/03/08 10:14

ありがとうございます!やってみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問