人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

txtファイルの任意の行を取り出して、同名のpdfファイル名の後ろに_を付けてリネームする、という処理を連続で行う方法を教えて下さい。バッチかvbsかpowershellでお願いしたいです。
例:
AAA.pdf
AAA.txt - 3行目にりんごとだけ書かれている
BBB.pdf
BBB.txt - 3行目にみかんとだけ書かれている


AAA_りんご.pdf
BBB_みかん.pdf

●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

VBSで構成してみました。
下の内容を”?.vbs"として保存し、実行してみてください。
環境や条件について述べられていないので、適当に思うままにしています。
”連続で行う”のはどのような運用を考えられてるかわかりませんが、そして、異例なケースに対するエラー処理のこととか考えると対処はいろいろと出てきますが。


'
'<質問内容>
'
' txtファイルの任意の行を取り出して、同名のpdfファイル名の後ろに_を付けてリネームする、という処理を
' 連続で行う方法を教えて下さい。バッチかvbsかpowershellでお願いしたいです。
'
' 例:
' AAA.pdf
' AAA.txt - 3行目にりんごとだけ書かれている
' BBB.pdf
' BBB.txt - 3行目にみかんとだけ書かれている
' …
' ↓
' AAA_りんご.pdf
' BBB_みかん.pdf
' …
'

Set objFs = CreateObject("Scripting.FileSystemObject")

wkPath = objFs.getParentFolderName(WScript.ScriptFullName) & "\testFile"
' ↑ここでは、本vbsの収容のフォルダパスを取得している。さらにサブフォルダのパスとしていて、このフォルダを処理対象とするようにしている。

wkCnt = 0
If 1 = 2 Then
'個別に指定
Call syori_Unit("AAA")
Call syori_Unit("BBB")
Else
'フォルダ内の全pdfファイルを対象とする
Set objFolder = objFs.getFolder(wkPath)
For Each objFile In objFolder.Files
wkFile = objFile.Name
If LCase(Right(wkFile, 4)) = ".pdf" Then
wkMei = Left(wkFile, Len(wkFile) - 4)
Call syori_Unit(wkMei)
End If
Next
End If


MsgBox "終了 処理数:" & wkCnt



Sub syori_Unit(fileMei)
'取り扱いファイル名
pdfMei = fileMei & ".pdf"
txtMei = fileMei & ".txt"
'
'ファイルの存在を確認する
If Not objFs.fileExists(wkPath & "\" & pdfMei) Then
MsgBox "ファイルがみつかりません! " & vbCrLf & wkPath & "\" & pdfMei
Exit Sub
End If

If Not objFs.fileExists(wkPath & "\" & txtMei) Then
MsgBox "ファイルがみつかりません! " & vbCrLf & wkPath & "\" & txtMei
Exit Sub
End If

'
'テキストファイルから言葉を取り出す
Set objText = objFs.opentextfile(wkPath & "\" & txtMei)
wkText1 = objText.ReadLine
wkText2 = objText.ReadLine
wkText3 = objText.ReadLine
wkWord = wkText3
objText.Close
'
'新ファイル名を構成
newPdfMei = fileMei & "_" & wkWord & ".pdf"
'
wkCnt = wkCnt + 1
MsgBox wkCnt & vbcrlf _
& "wkPath = " & wkPath & vbCrLf _
& "pdfMei= " & pdfMei & vbCrLf _
& "txtMei = " & txtMei & vbCrLf _
& "newPdfMei = " & newPdfMei & vbCrLf
'pdfファイル名を変更する
Set objPdf = objFs.getfile(wkPath & "\" & pdfMei)
objPdf.Name = newPdfMei

End Sub


匿名質問者さんのコメント
ばっちりです!ちょこちょこ改造しつつ使わせていただきます。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ