事象発生日:2018-01-21
記事公開日:2018-01-22
アクセス数:5789
最近なぜかバッチファイル (Batch File) を書く機会が多くて....
色々実験していたら,for
文変数で&
を含むファイルパスをecho
してもエラーにならないことに気づいた.
Microsoft Windows 10 Home (64bit)
以下のようなディレクトリを準備し,このファイルパスを再帰的に表示する.
X:. │ 1.bat │ └─root ├─hoge │ file1.txt │ file & file.txt │ └─fuga & piyo file1.txt file & file.txt
@echo off for /r %%A in (*.*) do ( echo %%A set FILE=%%A call echo %%FILE%% call :SUB ) echo. setlocal enabledelayedexpansion for /r %%A in (*.*) do ( echo %%A set FILE=%%A echo !FILE! call :SUB ) endlocal exit /b :SUB echo %FILE% exit /b
X:\1.bat X:\1.bat X:\1.bat X:\root\hoge\file1.txt X:\root\hoge\file1.txt X:\root\hoge\file1.txt X:\root\hoge\file & file.txt X:\root\hoge\file 'file.txt' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 X:\root\fuga & piyo\file1.txt X:\root\fuga 指定されたパスが見つかりません。 X:\root\fuga & piyo\file & file.txt X:\root\fuga 指定されたパスが見つかりません。 'file.txt' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 X:\1.bat X:\1.bat X:\1.bat X:\root\hoge\file1.txt X:\root\hoge\file1.txt X:\root\hoge\file1.txt X:\root\hoge\file & file.txt X:\root\hoge\file & file.txt X:\root\hoge\file 'file.txt' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 X:\root\fuga & piyo\file1.txt X:\root\fuga & piyo\file1.txt X:\root\fuga 指定されたパスが見つかりません。 X:\root\fuga & piyo\file & file.txt X:\root\fuga & piyo\file & file.txt X:\root\fuga 指定されたパスが見つかりません。 'file.txt' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
for
文変数%%A
とそれから渡された変数のうち,for
文内部のものだけファイルパスに&
があってもエラーが出ていない.
理由はわからなかったが,特殊なプロパティでも保持しているのだろうか?
詳細知っている人がいたら教えてください.
名前
Email (※公開されることはありません)
コメント