HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1219
へりあん実行ファイルにD&Dしたフォルダ内にあるテキストを書き換えたい9解決


へりあん

リンク

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したら



fortunehill

リンク

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のファイルマスクを使っても私の実力ではうまく出来ませんでした。



fortunehill

リンク

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

色んな場所に入れてみましたが「パラメータの値が異常です」と表示されてしまいます。
どこに入れればいいんでしょうか?



fortunehill

リンク

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



fortunehill

リンク

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



ONION software Copyright 1997-2018(c) All rights reserved.