• 締切済み

実行ファイル内に保持

Visual Studio Express 2013 Shell("cmd /c copy D:\aaa.txt " & textbox1.text & ".txt",AppWinStyle.Hide,True) 例ですが、 テキストボックスに任意の文字列を入力して、 aaa.txtをコピーするとします。 aaa.txtを固定の場所に置くのではなく、実行ファイル内に保持していて、 どのPCでも実行できるように出来ないでしょうか?

みんなの回答

回答No.1

aaa.txtがそもそも存在する必要がないのであれば,リソースとして保持すればよいです。 プロジェクトのプロパティを開いてファイルとして追加すればよいでしょう。 例示されたものであれば,File.WriteAllBytesと組み合わせてできます。 ref) http://msdn.microsoft.com/ja-jp/library/system.io.file.writeallbytes.aspx ref) http://msdn.microsoft.com/ja-jp/library/9za7fxc7(v=vs.110).aspx 実際に行っているのが,ファイルのコピーのようなそもそもShellを呼び出す必要な処理でないものではなく, 別のアプリケーションを起動する引数であるような,対象が実際にファイルである必要があるのであれば, ファイルを出力ディレクトリにコピーする設定にしておき, Assembly.GetEntryAssembly().Locationを元にパスを組み立てるのが簡単です。 ref) http://msdn.microsoft.com/ja-jp/library/system.reflection.assembly.getentryassembly.aspx ref) http://msdn.microsoft.com/ja-jp/library/system.reflection.assembly.location.aspx ref) http://msdn.microsoft.com/ja-jp/library/system.io.path.getdirectoryname.aspx ref) http://msdn.microsoft.com/ja-jp/library/fyy7a5kt.aspx または,リソースに保持してPath.GetTempFileNameに出力してしまってもよいでしょう。 ref) http://msdn.microsoft.com/ja-jp/library/system.io.path.gettempfilename.aspx

darky2
質問者

お礼

ありがとうございます 最後に記述されている方法を試してみます

darky2
質問者

補足

リソースのテキストファイルの出力はどうするのでしょうか?

関連するQ&A

  • テキストボックスの値を出力

    Visual Basic 2010 Express windows7 Pro テキストボックスに入力された数字をテキストファイルに出力したいのですが、 「4.0」や「04」だと出力されるのですが、「4」だと出力されないのは何故でしょうか? Shell("cmd /c @echo " & TextBox1.Text & ">> aaa.txt", AppWinStyle.Hide, True)

  • ラベルが表示されない

    Visual Basic 2010 Express windows7 Pro ボタンをクリックしたときに、まずラベルに表示させ、 Label1.Text = "実行中です" Shell("cmd /c @echo aaa > sss.txt", AppWinStyle.Hide, True) ・ ・ 複数のコマンドプロンプトを実行 ・ Shell("cmd /c @echo aaa > sss.txt", AppWinStyle.Hide, True) Label1.Text = "終了しました" 終わったら、またラベルに表示させたいのですが、実行中が表示されず 終わった時の終了しましたしか表示されません。 実行している時間は1分以上あるので、終了まで時間が短すぎてすぐ消えている訳ではありません。 実行中の次の行に MsgBox("テスト")として、動作が止まると、ラベルに実行中と表示されます。 止めずに実行中と表示させる方法はあるでしょうか?

  • startコマンド

    VB2008EE 下記の2行目は1行目が終わってから実行しようと「start /w」を入れたいの ですが、どこに入れればいいのでしょうか? cmdの前や、/cの後に入れてみましたが正常に動作しませんでした。 startのタイトルの""を入れてみようかと思ったのですが、 Shellの中で"を文字列として入れるにはどうしたらいいでしょうか? Shell("cmd /c plot " & f2 & " -p " & n1 & " > 00-pl1", AppWinStyle.NormalFocus, True) Shell("cmd /c plot " & f2 & " -p " & s2 & " > 00-pl2", AppWinStyle.NormalFocus, True)

  • 別のフォルダにコピー

    Visual Basic Express 2012 テキストボックスにファイルをD&Dして、絶対パスを取得して 名前を変更してコピーしています。 D:\test\aaa.txt → D:\test\aaa_abc.txt "cmd /c copy " & filen1 & ".txt " & filen1 & "_abc.txt" filen1は拡張子なしの絶対パスになっています。 末尾に文字を追加してコピーしているのですが、パスの途中に 文字を追加したいです。 D:\test\aaa.txt → D:\test\old\aaa_abc.txt 上記のように別のフォルダにコピーするにはどうしたら良いでしょうか?

  • ファイルを処理中に次の処理に移ってしまうようなのですが、、

    VB.NETですが、 趣味でアプリケーションを作成しています。 下記のコードで処理を実行させています。 Call Shell("C:\aaa.exe c:\test.txt c:\test2.txt", AppWinStyle.Hide) (A) Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default) Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1)) 'ファイルの最後までループ Do Until sr.Peek = -1 sb.Append(sr.ReadLine & vbCrLf) Loop sr.Close() "aaa"はtest.txtを加工してtest2.txtとして出力するプログラムです。 その後、test2を最後まで読み出しているのですが、 どうもプログラムaaaが処理を終了する前に 次の読み出し処理に移ってしまっているようなのです。 そこで、素人なりに上記(A)の部分に For i = 0 To 2000000000 Next For i = 0 To 2000000000 Next とForループを加えて時間稼ぎしているのですが、 状況によって時間稼ぎがうまくいかない場合があります。どのように問題を回避すべきでしょうか? aaaはDLLでも組み込み可能になっているプログラム なのですがDLLで実行させると何らかのメリット があるのでしょうか? その点を教えていただけると助かります。 回答よろしくお願いいたします。

  • テキストファイルに書き込めない(ファイルの所有者と実行者の違いか?)

    テキストファイルにログを書き込む以下の処理があります。 aaa.pl -------------------- open Log,">>aaa.txt"; print Log 'test'; close Log; Web上(アパッチ)からこのaaa.plを実行すると 正常に処理されて、aaa.txtに書き込まれます。 (aaa.txtのオーナーはwww。属性は644) それとは別に、/etc/aliasesに 特定のメールアカウントにメールが送られた時に このaaa.plが実行されるように設定しているのですが mail_address: "|/ccc/aaa.pl" (パスは適当ですが、実際にはあっています) こちらからaaa.plが処理させても、 aaa.txtに文字列が書き込まれなくて困っています。 open Log,">>aaa.txt"; chmod 666,"aaa.txt"; ... とPerl側でパーミッションを変更させようとしても うまく変更されていません。処理もされません。 おそらくaliasesに設定したPerlの実行権限者が ファイルの所有者(この場合www)と異なる為 書き込みもchmodもうまくいかないと思うのです。 aliasesで実行させるアカウントは いったいどのようなアカウントなのでしょうか(binユーザーとか?) また、これを回避するにはどのようにすればよろしいでしょうか? どなたかご存知の方、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • 実行ファイルについて

     OSはWinXPでコンパイラはVC++を使用しています。  作成したプログラム等がVisual Studio Projectsフォルダに保存されて、Debugの中にある実行ファイルが私の場合「program.exe」と保存されています。 その実行ファイルprogram.exeをcmdまでドラッグして実行すると問題なく実行できるのですが、program.exeそのものをクリックして実行すると、プログラムが終了したと同時に画面が消えるようになってしまいます。これを勝手に消えなくするにはどうすればよいのですか?教えてください。 *プログラム自体は問題ありません。

  • 実行するファイルを替える

    Visual studio 2012 Express を使用して、プロジェクトHello内に、.cppファイルを三つ作成しました。main ,_tmain ,_tWinMainを書いたプログラムですが、 _tmain ,_tWinMainのファイルを選択し、ビルドとデバックを行っても、mainのファイルが実行されてしまいます。 _tmain ,_tWinMainのファイルを実行する方法を教えてください。 お返事お願いします。

  • ファイルの呼び出し。

    Visual Basic 6.0 Textboxに外部のtxtファイルの内容を呼び出したい場合はどうしたらいいのでしょうか?(text1.text内) ・後、コマンドボタンを押したと同時に外部ファイルを呼び出すにはどうしたらいいのでしょうか?(新規)

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。