例:
AAA.pdf
AAA.txt - 3行目にりんごとだけ書かれている
BBB.pdf
BBB.txt - 3行目にみかんとだけ書かれている
…
↓
AAA_りんご.pdf
BBB_みかん.pdf
…
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
ばっちりです!ちょこちょこ改造しつつ使わせていただきます。
2017/07/07 02:46:12ありがとうございました。