patagonの日記: [コンピュータ]スクリプトをまとめるスクリプト
ネットワークドライブ上のフォルダは未対応(PCローカル上のフォルダのみ対応)だけど。
ドラッグ&ドロップでテキストを結合する8行のスクリプト (bgworks blog) をもとに一部、変更。
ドラッグ・ドロップでテキストを結合するスクリプト.cmd
@echo off
REM ドラッグ&ドロップでテキストを結合するスクリプト (bgworks blog)
REM http://bgworks.info/blog/2007/01/echo_type.html
REM オリジナル for /r %%a in (*.txt *.htm* *.sql) do >> "%~1\%o%" (echo %%a && type "%%a")
REM 使い方:スクリプトがあるフォルダをこのcmdにドラッグ&ドロップする
REM ネットワークドライブ上のフォルダは未対応(PCローカル上のフォルダのみ対応)
REM 結合された結果が同じフォルダ内の a.log に出力される
REM 「&& echo.」は強制改行するため
REM 「echo -- %%a」ならフルパス・ファイル名、「echo -- %%~nxa」はファイル名のみ。詳しくは for/?
REM 「GO」で繋ぐ
setlocal
set o=a.log
if "%~1"=="" exit /b
cd %1 || exit /b
if exist %o% del %o%
for /r %%a in (*.txt *.htm* *.sql) do >> "%~1\%o%" (echo -- %%~nxa && type "%%a" && echo.&& echo.&& echo GO --スクリプト結合ツールで挿入した「GO」 %%~nxa *** なんとかかんとか *** && echo.&& echo PRINT '%%~nxa *** STEP END ***' && echo.)
endlocal
空行を勝手に削除するので行儀がよくない
ファイル・フォルダの扱いに難がある。inputboxの扱い要修正
今のままだと使えない。相当手を入れないといけない。
' http://mitcc.biz/?p=165
' テキストファイル結合スクリプト | MITCC
' 上記ページのスクリプトを「“」、「”」→「"」に修正、「‘」→「'」に修正
' FileJoin.vbs
Dim pFS, pTemp, pWshShell
Dim sTemp(100,2)
Dim rFS, rTemp, rWshShell
Dim wFS, wTemp, wWshShell
Const ForReading = 1
Const ForWriting = 2
strFine = "結合が完了しました。"
strCancel = "キャンセルしました。"
Set objArgs = WScript.Arguments
'ドラッグドロップファイル名ループ(複数ファイルに対応)
For I = 0 to objArgs.Count - 1
'読み込みオブジェクト作成
Set rWshShell = WScript.CreateObject("WScript.Shell")
Set rFS = WScript.CreateObject("Scripting.FileSystemObject")
rTemp = objArgs(I)
Set rFile = rFS.GetFile(rTemp)
Set rbjScriptFile = rFS.OpenTextFile(rTemp, ForReading, True)
If I = 0 Then
strMakeName = InputBox(rFile.name & vbCR & vbCR & "の結合先フォルダ", rFile.ParentFolder, rFile.ParentFolder)
If strMakeName = "" Then
strMakeName = rFile.ParentFolder
End If
'書き込みオブジェクト作成
Set wWshShell = WScript.CreateObject("WScript.Shell")
Set wFS = WScript.CreateObject("Scripting.FileSystemObject")
wTemp = strMakeName & "+" & rFile.name
Set wbjScriptFile = wFS.OpenTextFile(wTemp, ForWriting, True)
End If
'ファイルの読み込み
Do While rbjScriptFile.AtEndOfStream <> TRUE
strCurrentLine = rbjScriptFile.ReadLine
If Len(strCurrentLine) > 3 Then
wbjScriptFile.WriteLine strCurrentLine
End If
Loop
rbjScriptFile.Close
Next
wbjScriptFile.Close
WScript.Echo strFine
[徒然]午後6時05分 More ログイン