質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

6回答

11551閲覧

Windows BAT(DOSコマンド)でパイプの使用ができない

退会済みユーザー

退会済みユーザー

総合スコア0

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

1クリップ

投稿2016/10/04 02:10

編集2016/10/05 14:59

ご覧いただきありがとうございます。

タイトル通り、パイプの使用ができない原因を知りたく質問をさせていただきました。

以下のコマンドはパイプの使用ができないとわかったときに使用したコマンドです。
※[xcopy],[echo]ともに、パイプを外した状態は正常に実行ができています。

echo F | xcopy /Y 移動元 移動先 エラーメッセージ 「ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています。」

パイプの使用方法が間違っているわけではないようで、他の方のPCで実行した場合は正常に動作しました。

パイプ自体がおかしいのかと思い
パイプを使って色々なコマンドを使ってみたら案の定、同じエラーメッセージが表示されます。

例 echo F | echo F エラーメッセージ 「ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています。」 ※正常動作だと「F」とだけ表示される。

パイプを使用して正常に動作させる方法があれば教えていただきたいと思っています。
よろしくお願いします。


以下 2016/10/04にて質問をした時の内容です。(参考程度に)

Dosコマンドにてパイプを使用すると 「ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています」 と言うエラーが出力されます。 使用用途はXCOPYでファイルのコピーの際にファイルを指定したいのでechoを使って指定してあげるというもので使います。 echo F | xcopy /Y /E 移動元 移動先 他の方のパソコンでは使用できるのですが自分のだけ使用できない状態でした。 よければ回答よろしくお願いします 追記 echo Fを外してパイプなしで実行したところXCOPYは実行できました 追記 14:51 xcopy以外にもパイプを使用してみましたがどれも同じエラーでした。 パイプ自体が機能していないと思うのですがどうでしょうか? 修正:19:10 ご指摘いただいた通りエラーメッセージが誤って記述されていたため正しいものに修正しました。 追記:19:29 imutakaoru様からの追記依頼 dir c: の結果を載せて欲しいとのこと(私用にて関係あるものは削除させていただきました) 2016/08/18 13:12 <DIR> 7za920 2016/04/04 17:00 30 AVScanner.ini 2016/09/21 19:00 <DIR> backup 2016/04/04 10:19 <DIR> dell 2016/08/09 19:29 <DIR> inetpub 2014/10/26 05:40 <DIR> Intel 2009/07/14 12:20 <DIR> PerfLogs 2016/09/19 12:05 <DIR> Program Files 2016/09/19 12:05 <DIR> Program Files (x86) 2016/10/04 19:15 <DIR> Temp 2016/09/12 11:27 <DIR> test 2016/08/24 10:11 <DIR> Users 2016/08/09 17:24 <DIR> Windows 今回の質問はxcopyではなくパイプが使えないという質問だったのですが、どうも私の質問の仕方が良くなく、xcopyの方に話になってしまいました。 ※xcopy以外にもパイプを使用すると同じエラーがでる 現在エラーが起こっているPCが手元にないため詳しくは記述ができないので、明日には質問内容を変更したいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imutakaoru

2016/10/04 06:15

dir c: の結果を貼っていただけますか。 あと、エラーメッセージは 「ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています」 でしょうか。
退会済みユーザー

退会済みユーザー

2016/10/04 10:09

現在PCの前にいないのですぐに貼ることはできなそうです。申し訳ないです。 はい。エラーメッセージはおっしゃる通りです。 間違ったエラーメッセージを記述していたようです。
imutakaoru

2016/10/04 23:53

あ。説明不足で申し訳ないです。 パイプが使えない理由の一つとして、パイプの生成に失敗していることを考えています。 そして、エラーメッセージからファイルシステムに何らかの異常があるのではないかと疑っています。 なので、ボリュームラベルや、予約語になっているdev,con等々、あるいはワイルドカードなどを含んだファイルやディレクトリがないかどうか見たかったのです。
退会済みユーザー

退会済みユーザー

2016/10/05 14:23

パイプの生成に失敗と言われるとなるほどという感じです。ただ、生成に失敗というのがイメージできないのですが、リダイレクトが失敗というイメージで良いのでしょうか?予約語などがディレクトリなどに含まれているものがあるということでしょうか?
imutakaoru

2016/10/05 23:52

可能性の一つとして、Windows APIのパイプ生成CreatePipe()やパイプへの接続CreateFile()で、 OSのいるドライブのボリュームラベルがなんらかの悪影響を与えている可能性もあるのかなあ、と思っています。 実ファイルを生成するわけじゃないからそんなバカな、とは思うのですが、それにしてはエラーメッセージが ファイルシステムの不整合を示唆しているようなメッセージなので気になったのです。
guest

回答6

0

今更ですが
解決の状態にしましたが、結局どのようになったのか記載していなかったので書いておきます。

結論から言うと、PCを替えるです。

PCを替えると言っても、PCの返却期日が来たので返却して違うPCにしただけですが。
やってもいないことを書いていいものか迷ったのですが、PCの型、OSなど確認できる範囲では同じでしたので、OCの再インストールで治るものだと思います。自分が何かをいじってしまったのが原因ではないかと。。。

遅くなりましたが、質問に対して真摯に対応してくださった方ありがとうございました。
(Windowsの再インストールを書いているChironianさんの回答をベストアンサーとさせていただきました)

投稿2017/12/17 17:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

解決について長い間放置していて申し訳ありません。
質問後、皆様の回答を参考にいたしました結果、Windowsの再インストールを行わせていただきました。
その結果、通常通りにパイプを使用することができるようになりました。
原因がわからないのは気持ち悪いのですが、これにて解決とさせていただきます。
皆様のご回答とご協力ありがとうございました。

投稿2017/05/25 14:42

編集2017/05/25 14:45
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

XCOPYオプションの"/I"を使って、そもそもキー入力の必要を無くしてしまうのは駄目ですかね?

投稿2016/10/08 08:42

Takeda_Kazuhito

総合スコア369

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそもxcopyを使う理由はなんでしょうか。

ただコピーできればいいだけであるならcopyコマンドも視野に入れていいと思います。
echo Fと渡していることから「コピーする対象がファイルかどうかを見て、ファイルならコピー」ということをやろうとしているように見受けられますが、そうであるならrobocopyコマンドを候補にするのもアリです。

robocopy /e 移動元 移動先 /xd *とすることでファイルのみコピーできます(ただしサブフォルダ以下のファイルもコピーされません)
逆にrobocopy /e 移動元 移動先 /xf *とすることでフォルダのみのコピーもできます。

robocopyはWindows Server 2008以降、もしくはWindows Vista以降に標準で含まれています。

余談ですが、私もChironianさんと同じく/Eオプションを外すとエラーなくコピーできました。

投稿2016/10/04 13:40

htsign

総合スコア870

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/04 14:00

ご回答ありがとうございます。 >そもそもxcopyを使う理由はなんでしょうか xcopyを使う理由は特に深い意味はありません。ディレクトリのコピーも実行するのでxcopyで統一したいと考えただけです。 >ただコピーできればいいだけであるならcopyコマンドも視野に入れていいと思います。 echo Fと渡していることから「コピーする対象がファイルかどうかを見て、ファイルならコピー」ということをやろうとしているように見受けられますが、そうであるならrobocopyコマンドを候補にするのもアリです。 はい。仰る通りだと思います。先程からすこし「robocopy」についても調べており、htsignさんのお話を聞く限り、採用も考えてみようと思います。
guest

0

ベストアンサー

こんにちは。

根本的な部分を勘違いしていそうですが、xcopyって標準入力を使いますか?
helpを見る限り、標準入力で何か指示する機能はないように見えます。

C:\TEST.txtが存在する状態で試しに下記をやってみると、

> echo f | xcopy /Y /E C:\TEST.txt C:\backup\TEST_20161004.txt サイクリック コピーは実行できません 0 個のファイルをコピーしました

となります。
/Eを指定しては行けない構文なので外してみると下記のようになりました。echo FのFがファイルのFに解釈されました。

>echo f | xcopy /Y C:\TEST.txt C:\backup\TEST_20161004.txt C:\backup\TEST_20161004.txt は受け側のファイル名ですか、 またはディレクトリ名ですか (F= ファイル、D= ディレクトリ)? f C:\TEST.txt 1 個のファイルをコピーしました

Windows 10です。

エラー・メッセージからして、移動元か移動先の構文を間違っていそうなので少しやってみましたが、同じメッセージを出せませんでした。

投稿2016/10/04 13:02

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/04 13:52 編集

ご回答ありがとうございます。 >根本的な部分を勘違いしていそうですが、xcopyって標準入力を使いますか?  基本的には使用はしないと思っています。  xcopyにてファイルの名前を変更してコピーする際に、移動先に変更後のファイル名を指定してあげるとできるのですが、ディレクトリ名かどうかを必ず聞かれてしまいます。  手動で実行する際にはいいのですが、自動で実行するとなると毎回「F」を押さないといけない事になってしまいとても面倒になってしまいますので、以下のようにパイプを使いたいと思っています。 参照URL:http://fpcu.on.coocan.jp/dosvcmd/bbs/log/copyxcopy/4-1478.html echo f | xcopy /Y C:\TEST.txt C:\backup\TEST_20161004.txt >Eを指定しては行けない構文なので外してみると下記のようになりました。 /Eについては確かに外さないと同じエラーが出ていることは確認できました。 >エラー・メッセージからして、移動元か移動先の構文を間違っていそうなので少しやってみましたが、同じメッセージを出せませんでした  自分も他のPCでは同じエラーメッセージを出力することはできなかったです。  Xcopy自体は実行ができているのですがパイプを使うとエラーが表示されてしまいます。 ○ xcopy /Y C:\TEST.txt C:\backup\TEST_20161004.txt ☓ echo f | xcopy /Y C:\TEST.txt C:\backup\TEST_20161004.txt
Chironian

2016/10/04 14:44

あ、なるほど。理解できました。 > echo f | xcopy /Y C:\TEST.txt C:\backup\TEST_20161004.txt をコピペしてやってみたのですが、私の環境では元の回答に書いたのと同じように正常に動作し、ご質問に書かれているエラー・メッセージは出ませんでした。 どこかに全角文字が潜んでいる等を疑ったのですが、それも違うようです。 パイプを使わないでxcopyした後なら「受け側のファイル名ですか、またはディレクトリ名ですか」を聞かれません。その状態でもパイプを使うとエラーになるようでしたら、微妙に違うxcopyが動いている可能性がありそうに思います。 > where xcopy にて起動されるxcopyのフルパスが表示されます。 私のところでは、C:\Windows\System32\xcopy.exeとなります。
退会済みユーザー

退会済みユーザー

2016/10/05 14:28

 xcopyをしたあとは多分ファイルが存在するため、上書き処理を行うからだと思います。[/Y]で上書きの場合通知しないオプションのため「ディレクトリ名ですか?」など聞かれないのだと思います。  ただ、今回の場合パイプを使わないでxcopyをしたあとにパイプを使って実行を行っても同じエラーが出てしまいます。  whereというコマンドは初めて見ましたので、実行しましたがChironianさんと同じフルパスが表示されています
Chironian

2016/10/05 15:13

> ただ、今回の場合パイプを使わないでxcopyをしたあとにパイプを使って実行を行っても同じエラーが出てしまいます。 というこは、入力モードになる前に標準入力をチェックしてエラーを出力していることになります。 xcopyのヘルプを見る限りではそのような機能はないように思います。 ということは、そもそもパイプが壊れているかxcopyが異常動作しているかのどちらかですね。 > echo xxx | pause にて、pauseで止まらずに直ぐにプロンプトが出るならパイプは正常と思います。 その場合は、現在のxcopyをバックアップして、他の正常動作するPCからxcopyを持ってきてみてはどうでしょうか? バイプが壊れていたら、ごめんなさい。Windowsの再インストール以外思いつきません。
guest

0

それはxcopyのエラーメッセージです。
単に移動元のファイルが無いとか、間違っているのではないでしょうか?

投稿2016/10/04 02:36

編集2016/10/04 02:43
ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/10/04 03:20

フォルダ構成は同じで他の方とやってみたところできていたので、違うと思います。 念のため確認をしてみます。
ishi9

2016/10/04 03:28

echo F ということは特定の一つのファイルを指しているはずなので、そのファイルがあるかどうか確認してみてください。
退会済みユーザー

退会済みユーザー

2016/10/04 04:01

移動元 C:¥TEST.txt 移動先 C:¥backup¥TEST_20161004.txt でファイルの確認もしてみたところ同じエラーでした。
ishi9

2016/10/04 05:22

/E オプションは本来ディレクトリのコピーのときに使うオプションなので 「echo F」と組み合わせるとおかしくなるのかもしれません。 (他の人のところで上手くいっているということなので、確実にだめというわけでもないのでしょうが) ひとまず、/Eオプションを外すとどうなりますでしょうか?
退会済みユーザー

退会済みユーザー

2016/10/04 05:31

同じエラーが出力されました。 こちらも同様echo F なしの場合は正常にコピーはできました
ishi9

2016/10/04 06:12

気になったのでいくつか試してみましたが、移動元が無い場合は普通に「ファイルが見つかりません」と表示されるだけでしたね。 echo F | xcopy /Y /E 移動元 移動先 単純にこの一文をコマンドラインで実行しても同じエラーが出るのでしょうか? もしそうならすいません、完全にお手上げです。 そうでないなら、バッチファイルの前後の処理に問題があるのかもしれません。 が、それはちょっと見てみないとどう悪いのかはわかりません。
退会済みユーザー

退会済みユーザー

2016/10/04 10:05

そうですね。 コマンドラインで実行していても同じエラーになっています。 他の方はできているのでパソコンの設定でなにかしてしまったのかもしれません。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問