VBScriptについて必死に話し合うスレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
マシュマロを食べるたびにピラフのちんちんを思い出す呪いをかけた
___
/::::::::::::::::\
/:::::─三三─\
/:::::::::<○>三<○>.\
/⌒)⌒)⌒.:::::::::: (__人__) :::::: \ /⌒)⌒)⌒)
| / / /.. ` ⌒´ | (⌒)/ / / /,,
| :::::::::::(⌒) / ゝ ::::::. .........._
| ノ \ /_ /´ ヽ
ヽ / ヽ / /0 .',
| | {o ::}
': /
ヽ、___,.,/ >>103
ところでさ「君の名は」って映画観た?
ピラフいちゃもんつけてやろうと思って観たけど
大号泣だったわ、あんな悲しい話だったとは…… >>105
観たがいいよ!YouTubeとかAmazonで400円で観れるから >>114
元祖、君の名はの岸恵子は85歳だけどね vbsなんていう、完全終了してる言語になんでしがみついてんの? 普通にJavaScriptかPowerShellだよね今なら なんか放っとけないんだよね
VBScriptにはピラフがいないといけないんじゃないかって
気がつくとVBScriptのことばかり考えてる >>123
Node.js使ったことある?あれマジヤバくない?なんていうかマジヤバくない?
超速いんですけど、メモリ効率もすごいし、zip解凍するだけで使えるハイパーポータビリティだし
あれはねヤバイね ピラフが居なくなったらMSもVBScriptから撤退するだろうな 仕事で初めて使うことになった
プログラミングとかの経験はほぼない
CSVファイルをデータベースにインサートをするスクリプト作ることになったんだけど、どんなコードを書くのか想像すら付かない
コードも暗号にしか見えないし出来るのか… 割とガチでJavaScript使った方が良いと思う >>128 だけど
とりあえず少し触ってデータベースへアクセスする部分は書けた(全部で5行くらいだけど)けどCSVをデータベースにインサートする部分が全く分からん
このケースってそんなにないのかな?
ネット見ても似たサンプルが見当たらない…
どういう考え方というか進め方をすればいい? >>132
やり方としてはCSVからSQL(insert文)作って実行するだけじゃない >>133
ありがとう
でも全然分からん
CSVファイルの中身を一度抽出する必要がある?
それともファイルごとDBぶん投げるの?
あと、インサート文を書くにしてもVALUE部分はどう書くの? >>134
csvファイルの中身を抽出してカラム毎に分解してinsert文を作る。
あとはピラフ大王に教えてもらえ >>135
ありがとう
やっぱ中身の分解は必要なんだね
もう少し調べてみる
ファイルの中身を列ごとに取得
SQL文作成
データベース接続
SQL投げる
って流れで良いかな?
質問ばっかりで申し訳ないんだけど、日付でファイルを指定したりも出来る? >>136
データベースエンジンによってはcsvをインポートするコマンドがあったりする。
SQLServerのbcpコマンドとか。 >>138
そうなんだね
ポスグレ使ってるから調べてみる
日付はCSVに付加させてて、今日の日付のファイルのCSVを読み込むって事をやりたい
行の取得が一般的なの?列の取得ってどうやるんだ? >>139
scripting.filesystemobjectをcreateobjextして
opentextfileで開いてreadlineするか
readallで全部読んでから、vbcrlfでSplitしてFor eachで処理する
読んだ一行は、カンマでSplitして文字列はダブルクォーテーションで囲んだりしながらvalue部分作成
あとはあらかじめ用意したSQLにくっつけて実行 >>140
ありがとう
呪文にしか見えん…
ちょっと調べながら解読してみる… >>142
スペル間違ったcreateobjectね ____/ ̄ ̄
/ │ ̄\__ ゴゴゴ・・・
/
.. 、 ,_
 ̄\_/ ̄ ̄\/ ̄ ゴゴゴゴゴゴ・・・
___/ ̄へ√⌒l⌒´ ̄ ̄\_
´ / \
_ ./ ̄ ̄ ̄\ /
__ `ソ/ ─ ─ \/ ̄/
\/゚ (●)。 (●) \/ rへ,ノ ・・・・・・
__>-へ| i (__人__) |ノ :.\_
.:/从へ、.゚` ⌒´o.ノ从rーヘ_
_::ノ :ノ`⌒Y⌒´:: \
.::┘ :│ ゚ >>142 です
>>140 の人丁寧に教えてくれたけど全然分からなかった…すまん…
CSVの読み込みにCOPYが使えるってのを見つけて試そうと思ったんだけどファイルの先頭3行に必要ない行があるからskipを使ってコード書いたけど実行すると”skip”付近で記述がおかしいみたいなエラーが出る
これ何かおかしい?
Sql = "COPY datatest FROM 'C:\\FTP_Test\\LOG01\\00006401' skip 3; " ピラフの雰囲気だとなんでもエクセルとVBA使ってそうだけど >>152
ピラフ貧乏だからエクセル持ってないの! >>151
ポストグレスの重要機密文書見たけどskipは載ってなかったよ
skipオプションは使えないんじゃないかな
https://www.postgresql.jp/document/9.3/html/sql-copy.html
テキストエディタでサクッちゃいなよ
やっちゃえエディタ >>154
skipないのか…
>>140の人がレスくれた内容がこの辺かな?
http://bayashita.com/p/entry/show/85
これを
読んだ一行は、カンマでSplitして文字列はダブルクォーテーションで囲んだりしながらvalue部分作成
あとはあらかじめ用意したSQLにくっつけて実行
って全然イメージ付かない…
1行ずつよんだ結果は上のサイトで言う所のstrLineに入ってるって理解で良いのかな?
この変数の中身をどう分解すれば良いんだ?
聞いてばっかりでごめん >>155
strLineには1行ずつ読んだ結果が入ってるよ
Split関数を使ってカンマで切って配列に変換すればいいよ
Dim values
values = Split(strLine, ",") >>156
ありがとう
CSVの列の数とテーブルの列の数が同じなら下の書き方で上手くインサートできる?
INSERT INTO test
(aaa,bbb,ccc)
VALUES
(values) >>157
数も順番も同じなら、テーブル名も省略できるよ “今日の日付のファイル”を読み出すって場合はどういうコードになるの?
日付を付加するとかはあるけど探して読み出すっていうのが見つけられなかった >>159
どこに日付が有るの?
ファイル名なのか、作成日付なのか変更日付なのか
ただ日付と言われても誰も解らないよ >>160
ごめん
読みだしたいファイルに日付が付加されてるんだけど(20171217みたいな感じ)、今日の日時が付いてるファイルのみ判別して読み出すっていうのがやりたい >>162
日付はファイルを作成した日時が付加されてる
今はパスに対象のファイルを指定してるから読み出したり出来てるんだけど、日付の指定で読み出し対象を変えたいなと思ったんだ >>162
パス名に一定の規則に基づいた日付がついていて、かつその日付を信頼して制御してOKなら、InStrとかReplaceを使ってパスを検索すれば良い
実際のファイル作成日や最終更新日を考慮しなければならないなら、FileSystemObjectとかを使ってFileのプロパティを調べて検索するべし >>162
ワイルドカードとかの指定は出来ないので
ファイル名を読み出して判定してからオープンする必要がある
sdate=replace(date,"/","")
set ofo = fso.GetFolder(folder)
とかでフォルダー取得して
For each ofi in ofo.files
でファイル一つずつ読み出し
if instr(ofi.name,sdate) <> 0 then
ファイル読み出し、DB書き込み処理
end if
こんな感じかな / ̄ ̄\
/ \
|::::::: : | , ノ.
. |::::::::::::: | 'ヽ (
|::::::::::::: | ) )
. |::::::::::::::: } ` ノ
. ヽ____ } ( ,ノ'  ̄
r'ニニヽ._\. ノ ;;.
r':ニニ:_`ー三`:く._ [l、.
/: : : : : : :`,ニ、: :_:_;> /,ィつ
. /: : : : : : : : / : : : ヽ\ ,∠∠Z'_つ
| : :.:.:.:.:.: . :/: : : : : : l : ヽ. / .r─-'-っ
. |:.:.:.:.:.:.:.:.:.,' ''" ̄: : :l: : : :l / ):::厂 ´
|:.:.:.:.::.:.:.:l -─-: : /:_:_:_:_l / ̄`Y´
. |:.:.::.:.::.::l.__: : : :/::: : : : :l/⌒ヽ: :〉
|::.:::.::.::l: : : : : : /:::: : : : : |: : : : ゙/ >>165
>>162です
見ながらやってみたんだけどわからなかった・・・
日付を判定する元にしてるのがsdateかなと思って中身見ようとCall MsgBox(sdate)ってやっても今日の日付が表示されないのはsdateには今日の日時が入ってないからなのかな?
あと、if instr(ofi.name,sdate) <> 0 then の文のinstrの意味って検索が一致した文字の位置を返すって役割って理解であってるかな?
if instr(ofi.name,sdate) <> 0 then この文の意味がよく分からなくて・・・
見ながら書いたコードなんだけどもう少しっぽいのに分からない・・・
Dim objFileSys
Dim objFolder
Dim objFile
Dim sdate
Dim a
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Data,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate)
Next >>170
dataじゃなくてdateね
Dim objFileSys
Dim objFolder
Dim objFile
Dim sdate
Dim a
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Date,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate) <> 0 then
end if
Next >>171
ありがとう
綴りを間違えてた…
本当に馬鹿な質問で申し訳ないんだけど
If instr(objFile.Name,sdate) <> 0 then
で今日と判別されたものはどこに入ってるの?
例えば今日の日付のファイルをデータベースに処理するとして、ここで判別された物がファイルのパスにしたり出来るのかなって思ってるんだけど理解間違ってるかな…
確認しようと中身をメッセージボックスに出してみようと思ったんだけど( )の中身はなんて指定すれば出せるかな
Set objFileSys = CreateObject("Scripting.FileSystemObject")
sdate = Replace(Date,"/","")
Set objFolder = objFileSys.GetFolder("c:\Filedate")
For Each objFile In objFolder.Files
If instr(objFile.Name,sdate) <> 0 then
Call MsgBox()
end if
Next >>173
ありがとう
途中でメッセージボックス出してファイルの名前だったり中身のデータも取得できた
みんな丁寧に教えてくれてほんとにありがとう $folder = "c:\Filedate"
# yyyymmdd
$today = Get-Date -Format "yyyyMMdd"
# 日付を含んだ
$filter = "*" + $today + "*"
$file = ls -File -Path $folder -Filter $filter
# 読み込み
Get-Content $file
PowerShell で書いた。
PowerShell, PowerShell_ise で実行して 修正
Get-Content では、相対パスでは、作業フォルダの場所次第で、動かないことがあるから、
絶対パスにしておいた方が無難
># 読み込み
>Get-Content $file
# 読み込み
Get-Content $file.FullName 文字列 "平成29年12月18日" をDate型に変換したいのですがどうやればいいですか
教えてくださいお願いします "平成29年12月32日" のように不適切な日付の場合はアラートを出したいです
よろしく教えてくださいよろしくおねがいします >>140-141
CSVの読み込み時に一律で Split(Line, ",") するのは勧めない。CSVの仕様的に正しくない。
「"」でくくられて「,」を持つフィールドを正しく取得できない。
良い機会だから、トークン切り出しクラスを実装してみたら?スキル上がるよ。
>>165
これくらい単純な事には、Execオブジェクトに dir /a-d /b させて StdOut をもらった方が楽。
ワイルドカードが使えるし。 >>179
「昭和80年」のような場合はどうすんのよ? >>180
そんなクラス作るくらいならADOでいいよ
execとかは楽かもしれないけど美しくないな >>182
CSVをmdbあたりに突っ込んでから再度取得する感じ? >>183
テキストクラスで直だよ
読み出しはDBと同等に出来る
書き込みできないけどね >>181
NGになって欲しい
なぜならば平成しか来ない想定だから 間違えた。
>>185 は >>184 ね。
ADO にそんなのあんの? >>187
テキストドライバがあるよ
ODBCドライバかOLEドライバかACEなんとかで提供されてるはず VBSは正規表現が使えるから、文字列から数字をパターンマッチで取り出して、
後は、数の範囲を確認する。
西暦や和暦では月は1〜12であることはわかるね。各月の日数は月によって異なる。
カレンダー見ればだいたいわかるね。ただし、うるう年では2月は29日になる。うるう年の判定方法は検索して。
年号はデータを用意するしかない。 >>184
追加はできるんじゃなかったかな
超絶遅いけど >>186
法律上は
明治45年7月30日と大正元年7月30日は同じ日
大正15年12月25日と昭和元年12月25日は同じ日
だからどちらも入力として受け付けるってことでいいのか? >>189
日本語で言われても全然わからない
VBScriptランゲージでどうぞよろしくお願いいたします >>191
平成だけで良いです
明治も大正も昭和も仕様に含めない方向で >>188
見つかった。こんなのあったのね…。
場合によっては使えるかな…。 >>190
insertは出来なかったはず
insertの変わりに普通にWritelineで追記してた >>195
うそーうそーうそー
ちょっと明日起きたら試してみる 毎年のことだが、1月は31日あり、2月は28日か29日あり、3月は31日あり、4月は30日あり、5月は31日あり、6月は30日あり、7月は31日あり、
8月は31日あり、9月は30日あり、10月は31日あり、11月は30日あり、12月は31日まである。 >>193
ちうことは…
1. フォーマットに従ってなければはじく。
2. 存在し得る日付かどうかを調べてはじく。
3. 合格したら西暦変換して出力
大体こんな感じ…だけどおまいさんなら楽勝で作れるでしょ。
今日は寝る。 >>194
CSVファイルの読み込みはイレギュラーケースがExcelとテキストドライバーで違ったりしてて
正しいものだけ読めれば良いですってことなら使えるのだろうけれども
Excelと同じ結果を得たいとか、不正なデータがあったらアラート出したいとか
そういう要求があるとパーサこしらえなきゃいけなかったりするんだよね
どこまで細かく見ますかってことになろうかと >>198
1.は正規表現でイケると思うの
2.はどうやるの?
3.もお願い
以上、よろしくお願いします ■ このスレッドは過去ログ倉庫に格納されています