過去の桐井戸端BBS (桐ver.8)
14444 ファイル複写・更新コマンドでワイルドカードを使った結果について KH 2001/12/09-10:25
 一括処理で、ファイル複写・同更新コマンドでワイルドカードを使って条件に合った複数ファイルを別フォルダに複写・更新しようと思うのですが、
151個のcmdファイルの一部13個のファイルだけが複写されないのです。
wfmやrptやkevなどはすべて上手く複写・更新されるのです。

以下のような、cmdの部分の複写の記述で新しいフォルダに複写していますが、
移らない13個は複写している自分自身のファイルでは在りません。

   代入 &P=#連結(&DIRP,"*.cmd")
   ファイル複写 &P,&DIRNP

拡張子の部分を変えた同様の記述で、wfmやrptなどはすべて問題なく複写されます。
色々と試したのですが、解決できません。移らないファイルは決まっているようです。
ファイル属性は普通の更新可能なファイルで全く問題ありません。

14447 Re:ファイル複写・更新コマンドでワールドカードを使った結果について pokopon 2001/12/09-12:39
記事番号14444へのコメント
KHさん こんにちは
どういうファイルが駄目で(ファイル名とか)どれが良いのか???
具体的に提示して頂かないとなんともいえませんが、
解析の方法として、

>   代入 &P=#連結(&DIRP,"*.cmd")
>   ファイル複写 &P,&DIRNP,&実行リンターン
    確認 #文字列(&実行リターン)

としてみて、状態や内容を確認(トレース)してみてはどうでしょうか。
コピー途中での一部ファイルだけがコピーされないのなら、
直接そのファイル名を記述して実行してみて、&実行リンターンの値を調べてみるとか。

----- HTML HELP から
エラー番号 説明
0 コマンドは正常に終了した。
100 ファイルが書き込み禁止。
102 ファイルが見つからない。
103 ファイル名の形式に誤りがある。
104 使用するファイルが多すぎる。
105 ファイルにアクセスできない。
106 カレントディレクトリは削除できない。
109 ディレクトリにこれ以上ファイルを作成できない。
111 ファイルが他のプログラムで使用されている。
116 同名のファイルがすでに存在する。
119 ディレクトリが空ではない。
175 ファイルが使用中。
その他 どれにも該当しないエラー。

14448 Re:ファイル複写・更新コマンドでワールドカードを使った結果について KH 2001/12/09-13:27
記事番号14447へのコメント
>>   代入 &P=#連結(&DIRP,"*.cmd")
>>   ファイル複写 &P,&DIRNP,&実行リンターン
>    確認 #文字列(&実行リターン)
>としてみて、状態や内容を確認(トレース)してみてはどうでしょうか。
>コピー途中での一部ファイルだけがコピーされないのなら、
>直接そのファイル名を記述して実行してみて、&実行リンターンの値を調べてみると
>か。

pokoponさん、有難うございました。

ご指摘の通り、実行してみましたら、「175」ファイルが使用中であることが判明しました。
複写されないファイルをその後下記のように追加してみましたが、「0」で正常に複写されました。

   代入 &P=#連結(&DIRP,"csv書き出し.cmd")
   ファイル複写 &P,&DIRNP,終了状態=&終了状態
   確認 #文字列(&終了状態)

推測ですが、自分自身を複写しようとして、そこで止まってしまっているのですね。
その下にあるファイルが複写されず、次に処理が移っているのだとわかりました。
このことが想定できなかったのでエラーチェックを入れていなかった私のミスです。
cmdのあるフォルダを複写する前にすべて自分自身であるかどうかの同名チェックしないとダメなようですね。
複写のcmdを別フォルダに置けば簡単なのですがそうもいかない事情があるので。
有難うございました、お陰さまで解決できそうです。またよろしくお願いします。
14449 Re:お陰様で解決できました。有難うございます。 KH 2001/12/09-14:14
記事番号14448へのコメント
>pokoponさん、お陰様で解決できました。

>クしないとダメなようですね。複写のcmdを別フォルダに置けば簡単なのですがそ
>うもいかない事情があるので。

cmdファイルのあるフォルダ内のすべてのファイル名を取得して、自分自身が何番目かチェックしてやっと出来ました。
頭の中がぐちゃぐちゃになりかけましたが、かつてその壁にぶち当たったことを思い出し、過去のファイルを探し当てました。
改造し、思ったより早く出来ました。ただ、変数名は垢抜けないままでは在りますが。
pokoponさん、本当にありがとうございました。またよろしくお願いします。
14453 Re:単にファイルを複写するだけなら・・・・ pokopon 2001/12/09-18:58
記事番号14449へのコメント
KHさん 解決できたようでよかったですね。

ただ、
>cmdファイルのあるフォルダ内のすべてのファイル名を取得して、自分自身が何番
>目かチェックしてやっと出来ました。

自分自身が「何番目」かは、そのフォルダに存在するファイルの種類、作成された日時、追加作成された場合など、
常に一定とならず、不定となる事も予想されます。
単に、ファイルを選択してコピーしたいだけなら、シェル実行でも実現できるかと思います。
自分自身もコピー可能かと思います(桐で開いていても)

桐の一括で、
シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
でどうでしょうか?

関連記事-過去ログから
http://www.fuku3.com/~habata/kbbs/kakov8/07328.htm
以下の内容を参考にしてみてください。

14454 Re:過去ログ在ったんですね、有難うございます。 KH 2001/12/09-20:24
記事番号14453へのコメント
pokoponさん、何度も有難うございます。

>自分自身が「何番目」かは、そのフォルダに存在するファイルの種類、作成された日時、追加
>作成された場合など、常に一定とならず、不定となる事も予想されます。

この点は、フォルダ内のファイル名をすべて取得し、それが何番目かを(当然ですがフォルダ内のcmdファイル数も)その都度取得するようにし、
自分自身のファイルが何番目かを実行するごとにやっていますので、ファイル数や順番などには影響されないよう作成したつもりです。
ご心配有難うございました。

>単に、ファイルを選択してコピーしたいだけなら、
>シェル実行でも実現できるかと思います。自分自身もコピー可能かと思います(桐で開いてい
>ても)
>
>桐の一括で、
>シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
>でどうでしょうか?
>
>関連記事-過去ログから
>http://www.fuku3.com/~habata/kbbs/kakov8/07328.htm
>以下の内容を参考にしてみてください。

この過去ログは、読み飛ばしていて助かりました。V5のコンバート部分でしたので、最近V8では動作の違いがあること事を知りました。
年に1回ぐらいしか使用しない部分だったためです。
ご丁寧なアドバイス有難うございました。
14456 「シェル実行」で便乗質問 悲しげ 2001/12/09-20:51
記事番号14453へのコメント
どもっ、pokoponさん
便乗質問させて下さい。(^^;)

>桐の一括で、
>シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
>でどうでしょうか?

cmdからこれを実行するとエラーとなりました。
(コマンドの形式に誤りがあります云々)
cmdの場合、ここを
 システム "command.com"," /c copy *.cmd d:\data\*.*"
に置き換えるとうまく行きました。

wfmのコマンド牡丹で、機能名を「シェル実行」とし、機能パラを
 "command.com"," /c copy *.cmd d:\data\*.*"
とすればうまく動きます。
が、例えば牡丹の手続き実行などで、kevを使った場合に、kevの記述で
 シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
とすると、これまたエラーとなります。
では、kevではどのように記述すべきなのでしょう?
(batを使うと、未確認ですが、きちんと動きそうな気がします)

この辺り、どのように理解したらいいのか、しばし(?_?)状態です。

14458 Re:さらにまた便乗 KH 2001/12/09-21:23
記事番号14456へのコメント
悲しげさん、ご無沙汰してます。お世話になりっぱなしのKHです。

便乗して、私はシェル実行の方は試さなかったので失礼しました。

初期の桐Grep(お披露目された2.50よりずっとの前のもの)で、悲しげさんから頂いたものを自分なりに改造して
使用させて頂いていたもので、自分自身のチェックしていた事を思い出し、
その部分を流用させていただき解決しました。
その節は本当に有難うございました。

さらに便乗して、シェル実行ではプログラムのファイル名にパラメータが使用できないのでは無かったでしょうか?
コマンドの書き方自体が、システムと勘違いされていたのでは?、と勝手に便乗してコメントします。

14459 Re:「シェル実行」で便乗質問 pokopon 2001/12/09-21:38
記事番号14456へのコメント
悲しげさん どもっ!!

>>桐の一括で、
>>シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
>>でどうでしょうか?
>cmdからこれを実行するとエラーとなりました。

ごめん (^^ゞ 勘違い!!
システム "command.com"," /c copy *.cmd d:\data\*.*"
でした。
シェル実行でやろうとすれば、
copy *.cmd d:\data\*.*
と書いた、DOSバッチファイルを用意し(例えばfcopy.bat)
シェル実行 "fcopy.bat"
でやんした(どこの言葉?)。

■シェル実行
#Windows のファイルタイプに登録されたアプリケーションを使用して、指定したファイルを開きます。

ということで、アイコンをクリックして実行できるものは全てシェル実行で実行できます。
Winで関連つけられたものですね。
bat , bmp , lnk などなど・・・・・たびたび問題とされる vbs まで。
KEVではシステムコマンドが使えませんので、もっぱらこの手法で実行でしょうか。
ただし、引数は指定できません(ショートカットの方に引数は指定可能か)
DOSバッチファイルは関連付けられたファイルですので、シェル実行で直接に実行可能です。
バッチファイルは印字コマンドで作成もできますので重宝かと・・・・・でも、DOS窓が出ますし、自動で閉じません。
その場合にはpifファイルを作成して・・・・自動で閉じさせることが必要?。

■システム
#指定したプログラムを実行します。MS-DOS のアプリケーションも実行できます。

コマンドラインで(DOS窓上で直タイプで実行できるもの)実行できるものです。
例えば、DOSコマンドの copy , dir , その他アプリ , kiri8.exe も。
DOSの内部コマンドを実行するにはcommand.com を起動してから、パラメーターとして copy コマンドを渡します。
引数も指定可能です。
ただし、このコマンドはKEVでは使用できません。

KEVで使うなら、選択の余地無しで「シェル実行」かと思うんですが。
CMDなら、目的や用途に応じて選択するのかと思います。

こういう問題にはhidetakeさんの登場でしょう。
上記に間違いがありましたら、フォローして下さい。

14460 Re:訂正 pokopon 2001/12/09-21:42
記事番号14453へのコメント
>シェル実行 "command.com"," /c copy *.cmd d:\data\*.*"
改め
システム "command.com"," /c copy *.cmd d:\data\*.*"

m(__)m

言い訳:NO.7355 を確認してから投稿したもので・・・・。
14461 Re:さらにまた便乗 pokopon 2001/12/09-21:44
記事番号14458へのコメント
KHさん こんにちは

>便乗して、私はシェル実行の方は試さなかったので失礼しました。
>さらに便乗して、シェル実行ではプログラムのファイル名にパラメー
>タが使用できないのでは無かったでしょうか?
>コマンドの書き方自体が、システムと勘違いされていたのでは?、と
>勝手に便乗してコメントします。

ご指摘のとおり。m(__)m


14462 Re:「シェル実行」で便乗質問 hidetake 2001/12/09-21:45
記事番号14459へのコメント
>シェル実行

コマンドボタンに「シェル実行」を設けてそれを実行する前に「オブジェクト操作」で好き勝手に変更し、その上で、
「メソッド呼び出し 実行」では・・・


14464 Re:「シェル実行」で便乗質問 pokopon 2001/12/09-22:00
記事番号14462へのコメント
hidetakeさん こんにちは

さっそくどうも。

>コマンドボタンに「シェル実行」を設けて
>それを実行する前に「オブジェクト操作」
>で好き勝手に変更し、その上で、
>「メソッド呼び出し 実行」では・・・

【機能パラメータ】
<ファイル名>[,<パラメータ>[,<作業フォルダー名>[,<実行時の大きさ>]]]
【説明】
パラメータは全て文字列式として評価する
<ファイル名>::=プログラムまたはドキュメントのファイル名です
<実行時の大きさ>::={"通常のウィンドウ” | "最小化" | "最大化"}
【起動条件など】

とのこと。
コマンドボタンの機能名の「シェル実行」とは「システム」と同等のこともできるのか? 引数も渡せるし。

KEVでシステムが使えないこと、シェル実行では引数を指定できないこと、でもコマンドボタンではそれらができる?
どうなっているんでしょうか? 解説してもらえたらな〜 (^^ゞ

 
14466 Re:「シェル実行」で便乗質問 hidetake 2001/12/09-22:47
記事番号14464へのコメント
>KEVでシステムが使えないこと、シェル実行では引数を指定できないこと、
>でもコマンドボタンではそれらができる?
>どうなっているんでしょうか? 解説してもらえたらな〜 (^^ゞ

開発の担当者がそれぞれ違い、単に趣味や思う部分が異なるだけだったりして・・・ (^_^;

14467 Re:「シェル実行」で便乗質問 pokopon 2001/12/09-23:16
記事番号14466へのコメント
>開発の担当者がそれぞれ違い、単に趣味や思う部分が
>異なるだけだったりして・・・ (^_^;
意外とそうかもしれませんね。
でも、迂回技としてシステムコマンドが使えるという事は喜ばしい事です。
ありがとうございました。
14469 Re:「シェル実行」で便乗質問 尾形 2001/12/10-10:04
記事番号14466へのコメント
>開発の担当者がそれぞれ違い、単に趣味や思う部分が
>異なるだけだったりして・・・ (^_^;
システムコマンドがkevで不可なのは辛い(面倒)

kev開発者の趣味でそうなったのなら迷惑なことですね (^^;
まぁ、想像を絶する深い理由があるんでしょう
#ちょっと思いうかばないが


シェル実行後の終了待ちのループで凄い負担がかかっている気がするが、そうでもないのか

戻る