MENU

溶けかけてるうさぎ HP BLOG TOP RECENT ARTICLES POPULAR ARTICLES ABOUT THIS BLOG

CATEGORY

大学 (93) 航空宇宙 (60) 写真 (38) 旅行 (20) 飯・酒 (12) コンピュータ (99) その他 (23)

TAG

ARCHIVE

RECENT

【Perl】吉祥寺.pm18 に参加してきた 【写真】北九州夜景撮影 ~工場夜景と関門海峡~ 【回路設計】回路設計・制作での気付き 【酒蔵】長岡・柏崎の日本酒めぐり 長岡で大気光学現象を観測

【bat】for文変数では,&を含むファイルパスをechoしてもエラーにならない

事象発生日:2018-01-21

記事公開日:2018-01-22

最近なぜかバッチファイル (Batch File) を書く機会が多くて....

色々実験していたら,for文変数で&を含むファイルパスをechoしてもエラーにならないことに気づいた.

1.動作環境

Microsoft Windows 10 Home (64bit)

2.準備

以下のようなディレクトリを準備し,このファイルパスを再帰的に表示する.

X:.
│  1.bat
│
└─root
    ├─hoge
    │      file1.txt
    │      file & file.txt
    │
    └─fuga & piyo
            file1.txt
            file & file.txt
ディレクトリ

3.ソースコードと実行結果

@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' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
実行結果

3.考察

for文変数%%Aとそれから渡された変数のうち,for文内部のものだけファイルパスに&があってもエラーが出ていない.

 

理由はわからなかったが,特殊なプロパティでも保持しているのだろうか?

詳細知っている人がいたら教えてください.

4.関連記事

コメントを投稿

名前

Email (※公開されることはありません)

コメント