2015/01/06

Windowsファイルアクセス

Windowsバッチファイルからのファイルアクセス手順のまとめ

処理(中身)抜き、読んだまま既存ファイルに追記する手順のサンプル。

(1) for文
for /f "delims=" %%i in (%SRC%) do @echo %%i>> %DST%

(2) PowerShell コマンドレット
Get-Content $src | Out-File $dst -Append -Encoding default

(3) PowerShell 行単位
$tesjis = [Text.Encoding]::GetEncoding("shift_jis")
$sr = New-Object System.IO.StreamReader($src, $tesjis)
$sw = New-Object System.IO.StreamWriter($dst, $true, $tesjis)
while (! $sr.EndOfStream) {
    $sw.WriteLine($sr.ReadLine())
}
$sw.Close()
$sr.Close()



(4) PowerShell バイナリ
$fmopen = [System.IO.FileMode]::Open
$ss = New-Object System.IO.FileStream($src, $fmopen)
$ds = New-Object 
System.IO.FileStream($dst, $fmopen)
$ds.Position = $ds.Length
while (0 -le ($b = $ss.ReadByte())) {
    $ds.WriteByte($b)
}
$ss.Close()
$ds.Close()



(5) VBS 行単位
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oSrc = oFso.OpenTextFile(sSrc, 1)
Set oDst = oFso.OpenTextFile(sDst, 8)
Do Until oSrc.AtEndOfStream
    sLine = oSrc.ReadLine()
    oDst.WriteLine(sLine)
Loop
oDst.Close
oSrc.Close


(6) VBS 文字単位
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oSrc = oFso.OpenTextFile(sSrc, 1)
Set oDst = oFso.OpenTextFile(sDst, 8)
Do Until oSrc.AtEndOfStream
    sChar = oSrc.Read(1)
    oDst.Write(sChar)
Loop
oDst.Close
oSrc.Close

(7) VBS バイナリ
Set oSrc = WScript.CreateObject("ADODB.Stream")
Set oDst = WScript.CreateObject("ADODB.Stream")
oSrc.Type = 1 'adTypeBinary
oSrc.Open
oSrc.LoadFromFile(sSrc)
oDst.Type = 1 'adTypeBinary
oDst.Open
oDst.LoadFromFile(sDst)
oDst.Position = oDst.Size
Do Until oSrc.EOS
    sByte = oSrc.Read(iBlockSize)
    oDst.Write(sByte)
Loop
oDst.SaveToFile sDst, 2 'adSaveCreateOverWrite
oDst.Close
oSrc.Close

0 件のコメント:

コメントを投稿