2011-10-14 5 views
29

私はバッチファイルでこのコマンドを実行している:"この時点で予期せぬことでした。

for %I in (*.txt *.doc) do copy %I c:\test2 

を...、それが戻って保持します:

を、私はこの時点では予想外でした。

このエラーはどのような原因ですか?

+7

を助け

希望それが部屋に歩くと、誰もがあなたについて話していたように感じる今まで正しい場所 – CharlesB

+11

でないという気持ちを持っていますか? – erbaker

+3

これはtshirt上にあるはずです。 –

答えて

44

を使用して、コマンドラインから、%%Iのような二パーセント記号で表記する必要がある場合は、単一%バリアントは、コマンドラインからのみ動作します

for %%i in (*.txt *.doc) do copy %%i c:\test2 

ダブル%マーカーにする必要があります。

3

バッチファイルから実行され、変数は唯一あなたがバッチ/ CMDファイル内で実行している場合は、1

1

私は、このエラーが* .cmdという名前のファイルから取得された場合に実行しました。私は第一引数のシンボルの前後に引用符を入れたら、警告メッセージが去っていきました

if %1 EQU "" 

if "%1" EQU "" 
1

ない私はバッチコマンドの最初の引数にアクセスしようとしたときにエラーが発生しました質問への直接回答ですが、プログラム、バッチコマンドなどでこのメッセージが出た場合は、"文字を含むPATHに関連している可能性が最も高いです。

たとえば、Atomエディタで、設定ビューでメッセージを取得していました。

"\"GNU was unexpected at this time 

これは私のPATHにそのための次のエントリ

...;C:\"Program Files"\"GNU ARM Embedded;..." 

を置く別のプログラムによるもので、それはありませんので、antislash文字が問題の原因となるいくつかのプログラム、でエスケープとして読まれますパス名の区切り文字ですが、単純な文字です。

私の解決策は、PATHから"を削除することでした。すべてうまくいきました。

...;C:\Program Files\GNU ARM Embedded;... 

PS:私は、これは多分、パス名にスペースをサポートしていません(この場合には組込用GNU ARM)元のプログラムに影響を与えることができるかどうか疑問を持っています。より多くの洞察力を持つ誰かがコメントで明確にできるなら、私は自分の投稿を更新するでしょう。これは

関連する問題