MENU

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

CATEGORY

大学 (135) 仕事 (11) 航空宇宙 (97) 写真 (67) 旅行 (30) 飯・酒 (16) コンピュータ (113) その他 (42)

TAG

ARCHIVE

RECENT

【学会】久しぶりのオンサイト開催 国内学会,かつ,学生最後の学会発表 【寝言】宇宙業界から「OBC が過去の PJ と同一なので,過去 PJ のソフトウェアが流用できて工数が削減できる」という主張を滅ぼしたい 【鉄道旅】鉄道開業150周年に思いを馳せる旅行(後編) 【鉄道旅】鉄道開業150周年に思いを馳せる旅行(前編) 【研究室プロジェクト】STAR SPHERE 衛星シッピング

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

事象発生日:2018-01-21

記事公開日:2018-01-22

アクセス数:4815

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

4.考察

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

 

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

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

関連記事

コメントを投稿

名前

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

コメント