C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 複数のファイルをcopyコマンド


(過去ログ 16 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■6258 / inTopicNo.1)  複数のファイルをcopyコマンド
  
□投稿者/ komaru (1回)-(2007/08/07(Tue) 09:52:13)

分類:[.NET 全般] 

質問:
フォルダ内の*.txtファイルをcopyコマンドを使ってまとめたいですが、どうすればいいでしょうか?

環境:
VS.NET 2003
引用返信 編集キー/
■6260 / inTopicNo.2)  Re[1]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (97回)-(2007/08/07(Tue) 10:00:33)
HIRO さんの Web サイト
No6258 (komaru さん) に返信
> 質問:
> フォルダ内の*.txtファイルをcopyコマンドを使ってまとめたいですが、どうすればいいでしょうか?
>
> 環境:
> VS.NET 2003

「まとめたい」とは具体的にどういう事でしょうか?
引用返信 編集キー/
■6261 / inTopicNo.3)  Re[2]: 複数のファイルをcopyコマンド
□投稿者/ komaru (2回)-(2007/08/07(Tue) 10:15:01)

> 「まとめたい」とは具体的にどういう事でしょうか?

フォルダの中に”1.txt”、”2.txt”、”3.txt”があります。
この3つのファイルの中身を”1.txt”にまとめることです。

コマンドの場合 copy 1.txt + 2.txt 3.txt
引用返信 編集キー/
■6262 / inTopicNo.4)  Re[2]: 複数のファイルをcopyコマンド
□投稿者/ komaru (3回)-(2007/08/07(Tue) 10:18:58)
No6260 (HIRO さん) に返信
> 「まとめたい」とは具体的にどういう事でしょうか?

「訂正」
フォルダの中に”1.txt”、”2.txt”、”3.txt”があります。
この3つのファイル一つに連結したいことです。

コマンドの場合 copy 1.txt + 2.txt + 3.txt

引用返信 編集キー/
■6264 / inTopicNo.5)  Re[3]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (98回)-(2007/08/07(Tue) 10:31:50)
HIRO さんの Web サイト
No6262 (komaru さん) に返信
> ■No6260 (HIRO さん) に返信
>>「まとめたい」とは具体的にどういう事でしょうか?
>
> 「訂正」
> フォルダの中に”1.txt”、”2.txt”、”3.txt”があります。
> この3つのファイル一つに連結したいことです。
>
> コマンドの場合 copy 1.txt + 2.txt + 3.txt
>

DOBONさんのところの
[DOSコマンドを実行し出力データを取得する]
http://dobon.net/vb/dotnet/process/standardoutput.html

を参考にしてみてはどうですか?

引用返信 編集キー/
■6265 / inTopicNo.6)  Re[4]: 複数のファイルをcopyコマンド
□投稿者/ komaru (4回)-(2007/08/07(Tue) 10:38:47)
No6264 (HIRO さん) に返信
> DOBONさんのところの
> [DOSコマンドを実行し出力データを取得する]
> http://dobon.net/vb/dotnet/process/standardoutput.html
>
> を参考にしてみてはどうですか?
>
教えていただきありがとうございます。
やってみます。
結果については後で連絡いたします。
引用返信 編集キー/
■6266 / inTopicNo.7)  Re[5]: 複数のファイルをcopyコマンド
□投稿者/ komaru (5回)-(2007/08/07(Tue) 10:56:35)
No6265 (komaru さん) に返信
 新しい問題発見

とってきたパスをコマンドにうまく渡せない。
Dim strFolder As String = フォルダパス
Dim stPrompt As String = String.Empty
For Each stFilePath As String In System.IO.Directory.GetFiles(strFolder, "*.dat")
stPrompt &= stFilePath
Next stFilePath
引用返信 編集キー/
■6271 / inTopicNo.8)  Re[6]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (99回)-(2007/08/07(Tue) 12:22:07)
HIRO さんの Web サイト
No6266 (komaru さん) に返信
> ■No6265 (komaru さん) に返信
>  新しい問題発見
>
> とってきたパスをコマンドにうまく渡せない。
> Dim strFolder As String = フォルダパス
> Dim stPrompt As String = String.Empty
> For Each stFilePath As String In System.IO.Directory.GetFiles(strFolder, "*.dat")
> stPrompt &= stFilePath
> Next stFilePath

Next stFilePath にブレークポイントを設定して、strPromptの内容がどのように変化しているかを調べてください。
引用返信 編集キー/
■6272 / inTopicNo.9)  Re[7]: 複数のファイルをcopyコマンド
□投稿者/ komaru (6回)-(2007/08/07(Tue) 12:28:09)
No6271 (HIRO さん) に返信
> Next stFilePath にブレークポイントを設定して、strPromptの内容がどのように変化しているかを調べてください。

strPrompt = ”c:\フォルダ\1.txtc:\フォルダ\2.txtc:\フォルダ\3.txt...c:\フォルダ\n.txt”
strPromptは以上のように変化していくので、とってきたパスを配列したほうがいいでしょうか?
また、配列したパスの代入も?です。

初心者です、いろいろ聞いてて、すみませんでした。
引用返信 編集キー/
■6273 / inTopicNo.10)  Re[1]: 複数のファイルをcopyコマンド
□投稿者/ 魔界の仮面弁士 (371回)-(2007/08/07(Tue) 12:33:04)
No6258 (komaru さん) に返信
> フォルダ内の*.txtファイルをcopyコマンドを使ってまとめたいですが、どうすればいいでしょうか?

全ての .txt が対象なら、「+」で繋げなくても
 COPY *.txt result.txt
だけで良いような気がします。サブフォルダまで列挙したいわけでは無さそうですし。

同じ拡張子で出力するのが不安なら、別の拡張子(たとえば .dat など)に吐いて、後からリネームするとか。
引用返信 編集キー/
■6274 / inTopicNo.11)  Re[8]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (100回)-(2007/08/07(Tue) 12:37:22)
HIRO さんの Web サイト
2007/08/07(Tue) 12:39:21 編集(投稿者)

No6272 (komaru さん) に返信
> ■No6271 (HIRO さん) に返信
>>Next stFilePath にブレークポイントを設定して、strPromptの内容がどのように変化しているかを調べてください。
>
> strPrompt = ”c:\フォルダ\1.txtc:\フォルダ\2.txtc:\フォルダ\3.txt...c:\フォルダ\n.txt”
> strPromptは以上のように変化していくので、とってきたパスを配列したほうがいいでしょうか?
> また、配列したパスの代入も?です。
>
> 初心者です、いろいろ聞いてて、すみませんでした。

strPrompt の中身に何を期待していますか?
おそらく、ファイルパスごとにスペースで区切られた文字列ですよね?

まずは指定フォルダにあるファイルパスを取得する
Dim files() As String = System.IO.Directory.GetFiles(strFolder, "*.txt")

で、ファイルパスごとにスペースで区切られた文字列を作成する
stPrompt = String.Join(Space(1), files)

としてはどうでしょうか?
引用返信 編集キー/
■6275 / inTopicNo.12)  Re[2]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (102回)-(2007/08/07(Tue) 12:43:41)
HIRO さんの Web サイト
No6273 (魔界の仮面弁士 さん) に返信
>  COPY *.txt result.txt
> だけで良いような気がします。サブフォルダまで列挙したいわけでは無さそうですし。

魔界の仮面弁士が仰る方法は簡単で良いですね。
条件が合うのであれば、コードが簡単になりますので検討してみた方がよいと思います。
引用返信 編集キー/
■6277 / inTopicNo.13)  Re[2]: 複数のファイルをcopyコマンド
□投稿者/ komaru (7回)-(2007/08/07(Tue) 12:59:43)
2007/08/07(Tue) 13:25:20 編集(投稿者)
2007/08/07(Tue) 13:22:41 編集(投稿者)

No6273 (魔界の仮面弁士 さん) に返信
> ■No6258 (komaru さん) に返信
>>フォルダ内の*.txtファイルをcopyコマンドを使ってまとめたいですが、どうすればいいでしょうか?
>
> 全ての .txt が対象なら、「+」で繋げなくても
>  COPY *.txt result.txt
> だけで良いような気がします。サブフォルダまで列挙したいわけでは無さそうですし。
>
> 同じ拡張子で出力するのが不安なら、別の拡張子(たとえば .dat など)に吐いて、後からリネームするとか。

ありがとうございます。
指定したフォルダ内にCOPYする場合はコマンドコードはどうすれあかけますか?
strFolder = "D:\data\"内のファイル一つに連結したいです。

また、COPY *.txt result.txtを使うとき’構文エラー’が発生しました。フォルダの指定していないと思いますが。
引用返信 編集キー/
■6281 / inTopicNo.14)  Re[3]: 複数のファイルをcopyコマンド
□投稿者/ HIRO (104回)-(2007/08/07(Tue) 14:55:25)
HIRO さんの Web サイト
No6277 (komaru さん) に返信
> 指定したフォルダ内にCOPYする場合はコマンドコードはどうすれあかけますか?
> strFolder = "D:\data\"内のファイル一つに連結したいです。

COPYコマンドの使用方法がわからずに、プログラムを作成しようとしたのでしょうか?
COPYコマンドのヘルプを見たり、インターネットで検索するなどしてみましょう。
その上で、〜をやってみたけどもわかりませんでした。(できませんでした) というように自分で行ってみたことを書いた方がレスがつきやすいと思います。
でないと、こちら側もいろいろと調べたりする必要も出てきますし...
なるべく丸投げはしない方がよいです。

> また、COPY *.txt result.txtを使うとき’構文エラー’が発生しました。フォルダの指定していないと思いますが。

ここの意味がよくわからないのですが、もう少し詳しく書いて頂けませんか?
コマンドプロンプト上で試して見ましたがエラーにはなりませんでした
引用返信 編集キー/
■6292 / inTopicNo.15)  Re[4]: 複数のファイルをcopyコマンド
□投稿者/ komaru (8回)-(2007/08/07(Tue) 16:30:09)
No6281 (HIRO さん) に返信
> ■No6277 (komaru さん) に返信
>>指定したフォルダ内にCOPYする場合はコマンドコードはどうすれあかけますか?
>>strFolder = "D:\data\"内のファイル一つに連結したいです。
>
> COPYコマンドの使用方法がわからずに、プログラムを作成しようとしたのでしょうか?
> COPYコマンドのヘルプを見たり、インターネットで検索するなどしてみましょう。
> その上で、〜をやってみたけどもわかりませんでした。(できませんでした) というように自分で行ってみたことを書いた方がレスがつきやすいと思います。
> でないと、こちら側もいろいろと調べたりする必要も出てきますし...
> なるべく丸投げはしない方がよいです。
>
>>また、COPY *.txt result.txtを使うとき’構文エラー’が発生しました。フォルダの指定していないと思いますが。
>
> ここの意味がよくわからないのですが、もう少し詳しく書いて頂けませんか?
> コマンドプロンプト上で試して見ましたがエラーにはなりませんでした
引用返信 編集キー/
■6310 / inTopicNo.16)  Re[5]: 複数のファイルをcopyコマンド
□投稿者/ komaru (9回)-(2007/08/07(Tue) 17:49:22)
No6292 (komaru さん) に返信
>>ここの意味がよくわからないのですが、もう少し詳しく書いて頂けませんか?
>>コマンドプロンプト上で試して見ましたがエラーにはなりませんでした

コマンドプロンプト上は「G:\フォルダ名>COPY *.txt result.txt」で
vb上は「"/c COPY *.txt result.txt /w"」です。
コマンドプロンプト上と同じフォルダ(G:\フォルダ名)を指定する場合はどうすればいいですか?
引用返信 編集キー/
■6313 / inTopicNo.17)  Re[6]: 複数のファイルをcopyコマンド
□投稿者/ 魔界の仮面弁士 (372回)-(2007/08/07(Tue) 18:12:34)
No6310 (komaru さん) に返信
> コマンドプロンプト上は「G:\フォルダ名>COPY *.txt result.txt」で
> vb上は「"/c COPY *.txt result.txt /w"」です。
/C というのは、%ComSpec% (Cmd.exe など)のパラメータでしょうか?

> コマンドプロンプト上と同じフォルダ(G:\フォルダ名)を指定する場合はどうすればいいですか?
カレントディレクトリを設定するのであれば、
System.IO.Directory.SetCurrentDirectory でどうでしょう。
VB なので、ChDrive / ChDir でも可かと。

あるいは、COPY G:\フォルダ名\*.txt G:\結果ファイル のようにパスを指定するとか。
引用返信 編集キー/
■6317 / inTopicNo.18)  Re[6]: 複数のファイルをcopyコマンド
□投稿者/ mあ (39回)-(2007/08/07(Tue) 18:19:54)
No6310 (komaru さん) に返信

C:\A_DIR\TEXT_A.txt
C:\B_DIR\TEXT_B.txt
C:\C_DIR\TEXT_C.txt


C:\TEMP\TEXT_ABC.txt
に纏めるには、

C:\>>Copy C:\?_DIR\*.txt C:\TEMP\TEXT_ABC.txt

てやる。上記でポイントは、 ? と * ね。
? は何か1文字にマッチ、? は文字列にマッチ
です。

大抵のコンソールコマンドには、 /? で簡易ヘルプが
見れるのでそれをまず見ること。あまり知識が無いと
ヘルプが知識がある奴前提で書かれているので役に立
たないことの方が多いが・・・・
Copy のヘルプの最後の方に、ワイルドカード云々が
あるので、インターネットでワイルドカードって何ぞ
や?を調べると、
http://www.aurora.dti.ne.jp/~keiko-t/
http://www.wildcard.co.jp/
とか出てくる。が、どれもこれも関係無さそう。
で、
MS-DOS ワイルドカード

困ったときの「とは」を使うと、
ワイルドカード とは
http://always-pg.com/glossary/kana10_wa/wild_card.html
こんなのが出てくるが、これまた良くわからない。
中途半端な説明。

http://ueno.cool.ne.jp/hideo/text/paso/dos.htm
ここもはしょってる、用例少ない。


まぁ、こんな感じで少ない手がかりをキーにして、インタ
ーネットで手当たり次第に調べるのだよ。調べて分かった
時は、こんな掲示板で聞くより100倍自分のためになる
よ。
もう絶版かも
しれないけど、ナツメ社っていう出版社が出している、
○○○ハンドブックっていう小冊子を本屋で買ってくると
良い。○の部分は、MS-DOSだったり、UNIXだったり、Perl
だったり、色々だけど、まぁ、基本的なことは大抵書いて
ある。本屋で立ち読みでもOKだな。Copy コマンドだけな
ら。

とりあえず、Windows の .EXE の拡張子があるファイルは、
実行するときに、 /? ってやると、ヒントなのにヒントと
は呼べないくらいのマニア向けのヒントを提供してくれる
ので覚えておいてね。


C:\> copy /?
1 つまたは複数のファイルを別の場所にコピーします。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B]送り側 [/A | /B]
[+ 送り側 [/A | /B] [+ ...]] [受け側 [/A | /B]]

送り側 コピーするファイル (複数可) を指定します。
/A ASCII テキスト ファイルとして扱います。
/B バイナリ ファイルとして扱います。
/D 受け側のファイルが暗号化が解除されて作成されるようにします。
受け側 新しいファイルのディレクトリまたはファイル名 (複数可) を指定し
ます。
/V 新しいファイルが正しく書き込まれたか検査します。
/N MS-DOS 形式以外の名前のファイルをコピーするときに、利用可能な
らば、短いファイル名を使用します。
/Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し
ません。
/-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し
ます。
/Z ネットワーク ファイルを再起動可能モードでコピーします。

環境変数 COPYCMD でスイッチ /Y が設定されている場合があります。
このスイッチは、コマンド ラインから /-Y が指定されると無効になります。既定
では、COPY コマンドがバッチ スクリプトから実行されていない場合、上書き確認
メッセージが表示されます。

複数のファイルを付加するときは、受け側に 1 個のファイルを指定し、送り側に
複数のファイルを指定します (ワイルドカードを使うか、ファイル1+ファイル2+
ファイル3 と指定します)。

C:\>


# こんな掲示板の ”こんな” に突っ込み入れないで下さい。m(__)m

引用返信 編集キー/
■6322 / inTopicNo.19)  Re[7]: 複数のファイルをcopyコマンド
□投稿者/ komaru (10回)-(2007/08/07(Tue) 19:18:00)
No6313 (魔界の仮面弁士 さん) に返信
■投稿者/ HIRO (104回)-(2007/08/07(Tue) 14:55:25)

>コマンドプロンプト上は「G:\フォルダ名>COPY *.txt result.txt」で
> あるいは、COPY G:\フォルダ名\*.txt G:\結果ファイル のようにパスを指定するとか。

できました。
いろいろ教えてくれまして、ありがとうございます。
また、何かあったら、宜しくお願い致します。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -