|
|
2014/12/19(Fri) 18:30:37|NO.66505
実行ファイルへ一度に複数のフォルダをD&Dし、それぞれのフォルダ内にあるiniファイルの
最終行に文章を加えて上書き保存するというツールを作ろうと思っています。
dirinfoやnoteaddを使うことは分かったんですが、うまく出来ません。
sampleのソースも利用してみましたが、うまくいきませんでした。
まだ初心者ですがよろしくお願いします。
|
|
2014/12/20(Sat) 14:47:58|NO.66521
bloadとかbsaveしたら
|
|
2014/12/21(Sun) 01:18:35|NO.66527
/*ご参考(UAC等管理者権限で弾かれる場合は知りません)*/
#uselib "shell32"
#func global DragAcceptFiles "DragAcceptFiles" sptr,sptr
#func global DragQueryFileA "DragQueryFileA" sptr,sptr,sptr,sptr
#func global DragQueryPoint "DragQueryPoint" sptr,sptr
#func global DragFinish "DragFinish" sptr
:DragAcceptFiles hwnd,1
oncmd gosub *label,$233 ;DROPFILES
stop
*label
:DragQueryFileA wparam,-1,0,0 :ii = stat :jj = 0,0
if (ii > 0) {sdim ss,512 :sdim rr,2048
;DragQueryPoint wparam,varptr(jj) :rr = ""+ii+","+jj+","+jj(1)+"\n"
repeat ii :DragQueryFileA wparam,cnt,varptr(ss),512 :rr += ss+"\n" :loop}
:DragFinish wparam
;mes ii ;ドロップされたファイルの数
;mes rr ;ドロップされたファイルのフルパス(改行区切り)
notesel rr
repeat ii :noteget pp,cnt;ドロップされたファイルのフルパス取得用
notesel dd ;ドロップされたファイルのテキスト取得用
noteload pp ;
mes dd ;何だかんだ処理を行う
noteunsel ;ノート命令の対象を前に戻す(ファイルパス情報)
wait 50 :cls :loop
return
|
|
2014/12/23(Tue) 00:43:31|NO.66540
思っていたより難しいんですね…でもおかげ様でなんとか分かりました!
ファイルを直接持って行っての書き換えは出来たんですが、フォルダごとドロップしてもエラーが
返ってきてしまいました。
フォルダ内にある指定したファイルを書き換えるにはどうすればいいですか?
フォルダ内の変更したい.iniファイルは一つだけです。
dirlistのファイルマスクを使っても私の実力ではうまく出来ませんでした。
|
|
2014/12/23(Tue) 01:25:35|NO.66543
/*ご参考(existでパスの種類を確認する:ロックされたファイルは知りません)*/
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {nn = "folder"} ; -1=ドロップしたのにファイルガ存在しない。
else {nn = "file" } ;
mes strf("%-50s = %s",pp,nn) ; ↓フォルダならパスにマスクを付けてファイルを抽出する。
if (nn == "folder") {dirlist ff,pp+"/*.ini" :mes ff}
loop
|
|
2014/12/23(Tue) 15:56:18|NO.66552
#uselib "shell32"
#func global DragAcceptFiles "DragAcceptFiles" sptr,sptr
#func global DragQueryFileA "DragQueryFileA" sptr,sptr,sptr,sptr
#func global DragQueryPoint "DragQueryPoint" sptr,sptr
#func global DragFinish "DragFinish" sptr
:DragAcceptFiles hwnd,1
oncmd gosub *label,$233 ;DROPFILES
stop
*label
:DragQueryFileA wparam,-1,0,0 :ii = stat :jj = 0,0
if (ii > 0) {sdim ss,512 :sdim rr,2048
;DragQueryPoint wparam,varptr(jj) :rr = ""+ii+","+jj+","+jj(1)+"\n"
repeat ii :DragQueryFileA wparam,cnt,varptr(ss),512 :rr += ss+"\n" :loop}
:DragFinish wparam
;mes ii ;ドロップされたファイルの数
;mes rr ;ドロップされたファイルのフルパス(改行区切り)
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {nn = "folder"} ; -1=ドロップしたのにファイルガ存在しない。
else {nn = "file" } ;
mes strf("%-50s = %s",pp,nn) ; ↓フォルダならパスにマスクを付けてファイルを抽出する。
if (nn == "folder") {dirlist ff,pp+"/*.ini" :mes ff}
loop
notesel rr
repeat ii :noteget pp,cnt;ドロップされたファイルのフルパス取得用
notesel dd ;ドロップされたファイルのテキスト取得用
noteload pp ;
noteadd "何だかんだ"
notesave pp ;何だかんだ処理を行う
noteunsel ;ノート命令の対象を前に戻す(ファイルパス情報)
wait 50 :cls :loop
return
色んな場所に入れてみましたが「パラメータの値が異常です」と表示されてしまいます。
どこに入れればいいんでしょうか?

| |
|
2014/12/23(Tue) 22:59:29|NO.66566
/*蛇足(あくまで”ご参考”であり完成された物ではありません)*/
#uselib "shell32"
#func global DragAcceptFiles "DragAcceptFiles" sptr,sptr
#func global DragQueryFileA "DragQueryFileA" sptr,sptr,sptr,sptr
#func global DragQueryPoint "DragQueryPoint" sptr,sptr
#func global DragFinish "DragFinish" sptr
:DragAcceptFiles hwnd,1
oncmd gosub *label,$233 ;DROPFILES
stop
*label
:DragQueryFileA wparam,-1,0,0 :ii = stat :jj = 0,0
if (ii > 0) {sdim ss,512 :sdim rr,2048
;DragQueryPoint wparam,varptr(jj) :rr = ""+ii+","+jj+","+jj(1)+"\n"
repeat ii :DragQueryFileA wparam,cnt,varptr(ss),512 :rr += ss+"\n" :loop}
:DragFinish wparam
;mes ii ;ドロップされたファイルの数
;mes rr ;ドロップされたファイルのフルパス(改行区切り)
notesel rr
;此処から
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {nn = "folder"} ; -1=ドロップしたのにファイルガ存在しない。
else {nn = "file" } ;
mes strf("%-50s = %s",pp,nn) ; ↓フォルダならパスにマスクを付けてファイルを抽出する。
if (nn == "folder") {dirlist ff,pp+"/*.ini" :mes ff}
loop
;此処までを入れ替えて動作確認するだけ・・・
return
|
|
2014/12/27(Sat) 02:00:36|NO.66660
ずっと考えましたが、どうしてもnoteloadに変数が入りません。
何をしてもエラーしか出ないです。
#uselib "shell32"
#func global DragAcceptFiles "DragAcceptFiles" sptr,sptr
#func global DragQueryFileA "DragQueryFileA" sptr,sptr,sptr,sptr
#func global DragQueryPoint "DragQueryPoint" sptr,sptr
#func global DragFinish "DragFinish" sptr
:DragAcceptFiles hwnd,1
oncmd gosub *label,$233 ;DROPFILES
stop
*label
:DragQueryFileA wparam,-1,0,0 :ii = stat :jj = 0,0
if (ii > 0) {sdim ss,512 :sdim rr,2048
;DragQueryPoint wparam,varptr(jj) :rr = ""+ii+","+jj+","+jj(1)+"\n"
repeat ii :DragQueryFileA wparam,cnt,varptr(ss),512 :rr += ss+"\n" :loop}
:DragFinish wparam
;mes ii ;ドロップされたファイルの数
;mes rr ;ドロップされたファイルのフルパス(改行区切り)
notesel rr
;此処から
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {nn = "folder"} ; -1=ドロップしたのにファイルガ存在しない。
else {nn = "file" } ;
mes strf("%-50s = %s",pp,nn) ; ↓フォルダならパスにマスクを付けてファイルを抽出する。
if (nn == "folder") {dirlist ff,pp+"/*.ini" :mes ff}
noteload ff
noteadd "aaa"
notesave ff
noteunsel ;ノート命令の対象を前に戻す(ファイルパス情報)
wait 50 :cls :loop
;此処までを入れ替えて動作確認するだけ・・・
return

| |
|
2014/12/28(Sun) 22:07:13|NO.66691
色々試しましたがやはりnoteloadで止まりますね・・・
#uselib "shell32"
#func global DragAcceptFiles "DragAcceptFiles" sptr,sptr
#func global DragQueryFileA "DragQueryFileA" sptr,sptr,sptr,sptr
#func global DragQueryPoint "DragQueryPoint" sptr,sptr
#func global DragFinish "DragFinish" sptr
:DragAcceptFiles hwnd,1
oncmd gosub *label,$233 ;DROPFILES
stop
*label
:DragQueryFileA wparam,-1,0,0 :ii = stat :jj = 0,0
if (ii > 0) {sdim ss,512 :sdim rr,2048
;DragQueryPoint wparam,varptr(jj) :rr = ""+ii+","+jj+","+jj(1)+"\n"
repeat ii :DragQueryFileA wparam,cnt,varptr(ss),512 :rr += ss+"\n" :loop}
:DragFinish wparam
;mes ii ;ドロップされたファイルの数
;mes rr ;ドロップされたファイルのフルパス(改行区切り)
notesel rr
;此処から
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {nn = "folder"} ; -1=ドロップしたのにファイルガ存在しない。
else {nn = "file" } ;
mes strf("%-50s = %s",pp,nn) ; ↓フォルダならパスにマスクを付けてファイルを抽出する。
if (nn == "folder") {dirlist ff,pp+"/*.ini" :mes ff}
A= ""+pp+"\\"+ff+"
notesel buf
noteload A
noteadd "本文"
notesave A
loop
;此処までを入れ替えて動作確認するだけ・・・
return
|
|
2014/12/29(Mon) 00:27:16|NO.66695
/*蛇足2
①ドロップされたパス情報のリストを取得(NO.66527)
②サブフォルダ内に対象ファイルがあるか抽出(一段下のみ:識別はファイルサイズのみ -1:NO.66543)
③サブフォルダパス情報を削除(此の場合空にした ””)
④パス情報のリストに抽出されたパス情報を追加(此の場合最後に追加した)
⑤パス情報が空で無い場合内容を表示させた
⑥あとは目的に合わせて改良や追加を行うだけです(方法は無数にあるので)
*/
;此処から上は省略しました
notesel rr
sdim aa ;サブフォルダの対象パス蓄積用
repeat ii :noteget pp,cnt
exist pp
if (strsize == -1) {dirlist ff,pp+"/*.ini" ;サブフォルダの検索
:noteadd "",cnt,1 ;フォルダパス名を空にする
:notesel ff
repeat notemax :noteget gg,cnt
noteadd pp+"\\"+gg,cnt,1 ;抽出ファイル名にパス情報を付加する
loop
:noteunsel ;ノート命令の対象を戻す
:aa += ff} ;抽出対象パスの加算
loop :rr += aa ;パス情報に抽出対象パスを追加
repeat notemax
noteget pp,cnt
if (pp != "") {title strf("[%d] %s",cnt,pp) :notesel dd
:noteload pp :mes dd :noteunsel :wait 90 :cls}
loop
return
|
|