リストファイルを処理するスクリプト (BATch/VBScript/PowerShell)
大体同じ事をするスクリプト。バッチとVBScript とPowerShellで作成してみた。
ソースはこちら DoList.zip
1)バッチ
if not exist list.txt (
echo list.txt ファイルがありません >> share.log
exit
)
for /F %%S in (list.txt) do (
echo %%S >> chk.log
)
2)VBScript
on error resume next
Dim fso,theFile,theLog,s
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set theFile = fso.OpenTextFile(“list.txt”,1,False)
Set theLog = fso.OpenTextFile(“chk.log” ,8,True)if err.number <> 0 then
theLog.WriteLine(“ファイルlist.txtが見つかりません”)
else
Do While theFile.AtEndOfStream <> True
s = theFile.ReadLine
theLog.WriteLine(s)
Loop
theFile.Close
end if
theLog.Close
3)PowerShell
#ここでwrite-outputは要らないが他で転用のために記載
if (Test-Path list.txt) {
foreach ($s in (get-content list.txt)) {
#write-output $s >> check.log #UTF8になる
write-output $s | add-content -encoding String check.log
}
} else{
write-output “ファイル list.txt がありません” |add-content -encoding String check.log
}
3)’PowerShellその2
# PowerShellは以下でも同じ。alias利用。
if (Test-Path list.txt) {
foreach ($s in (gc list.txt)) {
echo $s |ac -enc String check.log
}
} else{
echo “ファイル list.txt がありません” | ac -enc String check.log
}
3)” PowerShell その3
# foreachの少し違う使い方。foreachは%でも置き換えられる。
if (Test-Path list.txt) {
gc list.txt| foreach { echo $_ | ac -enc String check.log}
} else{
echo “ファイル list.txt がありません” | ac -enc String check.log
}