ページ 1 / 1
ABからDOSコマンドを
Posted: 2008年2月05日(火) 20:37
by いとちゃん
先日、ディレクトリを作ることをおかげさまで教えていただきました。
でも、そのときの関数は「createdirectry」であり、フォルダ作成のみが
可能でした。
copy
や
type
などのDOSコマンドをコンパイルされたABオブジェクトから実施することは
可能なのでしょうか?
達人の皆様ご指導お願いいたします。
例)
testと入力するとtestフォルダをつくり、workにあるすべてのファイルを
コピーする。
createdirectory c:\test
copy c:\work\*.* c:\test
ようなことをしてみたいのです。このときのc:\testは、変数となるため
ABでしたいのです。
Posted: 2008年2月05日(火) 21:55
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)
DOSコマンド
Posted: 2008年2月05日(火) 22:13
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コマンドを
Posted: 2008年2月06日(水) 14:54
by ゲスト
せっかくなので、Dosを捨ててWinアプリで作りませんか?
ABのメニューからヘルプ(H)HELP->トピックス(T)でActiveBasicライブラリ(HELPファイル)を開きます。
目次->リファレンス->Win32AIP->システムサービス->ファイル
でファイル操作に関するAPIが見えます。
ファイルをコピーするには、CopyFileを使用します。
ワイルドカードは使えなかったと思います。
その場合はFindFirstFileでファイル一覧を取得し、CopyFileで順次コピーする事になると思います。
面倒なようですけど、ABでWinアプリを作るには避けて通れない道です。
.Netなら便利なAPIがたくさん有るんですけどね。
Re: ABからDOSコマンドを
Posted: 2008年2月06日(水) 22:13
by omasu
お世話になります。
> せっかくなので、Dosを捨ててWinアプリで作りませんか?
そうですねとも、そうでないとも言えます。
ベーシックを捨ててC言語で作りませんか?と同様に
自由を失ったらつまらないと言えます。
アクティブベーシックにできることは無限の可能性があると感じます。
Posted: 2008年2月06日(水) 22:32
by konisi
> せっかくなので、Dosを捨ててWinアプリで作りませんか?
DosにもWinアプリにも、それぞれ利点と欠点があると思います。
挙げるなら、例えばDosを使う場合は新しくコードを書く量が少なくてすむとか、汎用性が低いとか
Winアプリの場合は汎用性がいいとか、ソースコード量が増える→(いろいろな意味で)資源を無駄にしてしまうとか
都合のいいほうを選ぶのがいいのでは?
これ!かなりいいです。なるほど。
Posted: 2008年2月10日(日) 00:58
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
>
Posted: 2008年2月10日(日) 01:56
by ゲスト2
winアプリを使ってdosコマンド機能を実現しましょうというのは言い方はともかく、素直な意見だと思います
「言葉の表現」からするとゲストでなくてもよいのでは
dosコマンドの機能を包括し、関数たちをわかりやすいdos記述で、winアプリで作成すればいいのかな?
例
フォルダの作成 Mkdir(”パス¥フォルダ名”)
ファイルのコピー Copy(”パス¥フォルダ¥ファイル名”,”パス¥フォルダ¥”)
ファイル内容の表示 Type(”フォルダ¥ファイル名”)
理想論でした。
すばらしくうまくいきました。ありがとうございます。
Posted: 2008年3月10日(月) 17:09
by いとちゃん
みなさんのおかげで目的達成できました。
ただ、1)DOSコマンドのコピーをしている際や
2)DELをする際に
1)同じファイル名があると聞かれる
2)全消ししようとするといいですかと聞かれる
ことが発生しました。仕方ないですね。
ありがとうございました。スッキリです。
DOSコマンドラインのスイッチについて
Posted: 2008年3月11日(火) 23:35
by omasu
お世話になります。
DOSコマンドの基本的なスイッチを使用すれば回避できると思われます。
コマンドラインの後ろに下記スイッチを指定してください。
> 1)同じファイル名があると聞かれる
/Y
> 2)全消ししようとするといいですかと聞かれる
/Q
そうなんですか?やってみます。
Posted: 2008年5月22日(木) 08:14
by いとちゃん
OSAMUさんへのコメントです。
このスイッチをつけることで、システムからの質問が消えますか?
やってみます。
ありがとうございます。