ABからDOSコマンドを

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
いとちゃん

ABからDOSコマンドを

#1 投稿記事 by いとちゃん »

先日、ディレクトリを作ることをおかげさまで教えていただきました。
でも、そのときの関数は「createdirectry」であり、フォルダ作成のみが
可能でした。

copy

type

などのDOSコマンドをコンパイルされたABオブジェクトから実施することは
可能なのでしょうか?

達人の皆様ご指導お願いいたします。

例)
testと入力するとtestフォルダをつくり、workにあるすべてのファイルを
コピーする。
createdirectory c:\test
copy c:\work\*.* c:\test

ようなことをしてみたいのです。このときのc:\testは、変数となるため
ABでしたいのです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

調べてみると、cmd.exeやcommand.comのコマンド「/C」を使うと出来そうです。
cmd.exeはWin9x系には入っていないと思うので、OSのバージョン確認を最初にしておくべきかもしれません。

構文: cmd.exe /C コマンド

例1

コード: 全て選択

Dim buf As *Byte,command As *Byte
' ...
wsprintf(buf,"/C %s",command)
Exec "cmd.exe",buf
例2

コード: 全て選択

#console
Dim A$ As String,buffer As *Byte
Print "Input Command"
Input A$
A$="/C "+A$
buffer=StrPtr(A$)
Exec "cmd.exe",buffer
Sleep(-1)
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

DOSコマンド

#3 投稿記事 by omasu »

お世話になります。

 バッチファイルを作ってから一括処理するのも面白そうですね

コード: 全て選択

#N88BASIC

Open "TEST.BAT" For Output As #1

Print #1,"MKDIR C:\TEST"
Print #1,"COPY C:\WORK\*.* TEST\"

Close #1

Exec "TEST.BAT"

End
ゲスト

Re: ABからDOSコマンドを

#4 投稿記事 by ゲスト »

せっかくなので、Dosを捨ててWinアプリで作りませんか?

ABのメニューからヘルプ(H)HELP->トピックス(T)でActiveBasicライブラリ(HELPファイル)を開きます。
目次->リファレンス->Win32AIP->システムサービス->ファイル
でファイル操作に関するAPIが見えます。

ファイルをコピーするには、CopyFileを使用します。

ワイルドカードは使えなかったと思います。
その場合はFindFirstFileでファイル一覧を取得し、CopyFileで順次コピーする事になると思います。
面倒なようですけど、ABでWinアプリを作るには避けて通れない道です。
.Netなら便利なAPIがたくさん有るんですけどね。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

Re: ABからDOSコマンドを

#5 投稿記事 by omasu »

お世話になります。

 > せっかくなので、Dosを捨ててWinアプリで作りませんか?

そうですねとも、そうでないとも言えます。

 ベーシックを捨ててC言語で作りませんか?と同様に
 自由を失ったらつまらないと言えます。

アクティブベーシックにできることは無限の可能性があると感じます。
 
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#6 投稿記事 by konisi »

> せっかくなので、Dosを捨ててWinアプリで作りませんか?

DosにもWinアプリにも、それぞれ利点と欠点があると思います。
挙げるなら、例えばDosを使う場合は新しくコードを書く量が少なくてすむとか、汎用性が低いとか
Winアプリの場合は汎用性がいいとか、ソースコード量が増える→(いろいろな意味で)資源を無駄にしてしまうとか

都合のいいほうを選ぶのがいいのでは?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
いとちゃん

これ!かなりいいです。なるほど。

#7 投稿記事 by いとちゃん »

意外と簡単なようで、分かりませんでした。
ありがとうございます。


> お世話になります。
>  バッチファイルを作ってから一括処理するのも面白そうですね
>

コード: 全て選択

#N88BASIC
> 
> Open "TEST.BAT" For Output As #1
> 
> Print #1,"MKDIR C:\TEST"
> Print #1,"COPY C:\WORK\*.* TEST\"
> 
> Close #1
> 
> Exec "TEST.BAT"
> 
> End
> 
ゲスト2

#8 投稿記事 by ゲスト2 »

winアプリを使ってdosコマンド機能を実現しましょうというのは言い方はともかく、素直な意見だと思います

「言葉の表現」からするとゲストでなくてもよいのでは

dosコマンドの機能を包括し、関数たちをわかりやすいdos記述で、winアプリで作成すればいいのかな?


 フォルダの作成   Mkdir(”パス¥フォルダ名”)
 ファイルのコピー  Copy(”パス¥フォルダ¥ファイル名”,”パス¥フォルダ¥”)
 ファイル内容の表示 Type(”フォルダ¥ファイル名”)

理想論でした。
いとちゃん

すばらしくうまくいきました。ありがとうございます。

#9 投稿記事 by いとちゃん »

みなさんのおかげで目的達成できました。

ただ、1)DOSコマンドのコピーをしている際や
2)DELをする際に

1)同じファイル名があると聞かれる
2)全消ししようとするといいですかと聞かれる

ことが発生しました。仕方ないですね。


ありがとうございました。スッキリです。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

DOSコマンドラインのスイッチについて

#10 投稿記事 by omasu »

お世話になります。

 DOSコマンドの基本的なスイッチを使用すれば回避できると思われます。
 コマンドラインの後ろに下記スイッチを指定してください。

> 1)同じファイル名があると聞かれる

  /Y

> 2)全消ししようとするといいですかと聞かれる

  /Q
いとちゃん

そうなんですか?やってみます。

#11 投稿記事 by いとちゃん »

OSAMUさんへのコメントです。

このスイッチをつけることで、システムからの質問が消えますか?

やってみます。

ありがとうございます。
返信する