Windows CMD シェルは!
、ディレクトリ名から " " 文字を取り除いています。
現在の作業ディレクトリが " C:\\!MyFolder
"であると仮定します
.CMD ファイル内では、次の構文を使用します。
set _STARTPATH=%CD%
echo %_STARTPATH%
C:\MyFolder
バンバン(!
)なしで表示されます
これは WinXP から Win8.1 まで共通です。
Q: これに対する回避策を知っている人はいますか?
Windows CMD シェルは!
、ディレクトリ名から " " 文字を取り除いています。
現在の作業ディレクトリが " C:\\!MyFolder
"であると仮定します
.CMD ファイル内では、次の構文を使用します。
set _STARTPATH=%CD%
echo %_STARTPATH%
C:\MyFolder
バンバン(!
)なしで表示されます
これは WinXP から Win8.1 まで共通です。
Q: これに対する回避策を知っている人はいますか?
遅延展開を有効にした場合は、変数展開にも使用する必要があります
set _STARTPATH=!CD!
echo !_STARTPATH!
エスケープして変数の検索/置換をdelayedexpansion
試すことができます: !
echo %cd:!=^^!%
しかし、解決策は一時的に無効にすることです delayed expansion
...
setlocal disabledelayedexpansion
echo %cd%
setlocal enabledelayedexpansion
...
.
@echo off
setlocal
rd !MyFolder
md !MyFolder
setlocal enabledelayedexpansion
echo enabledelayedexpansion is ON
@timeout /t 1 /nobreak>nul
echo dir /b /ad "^!*"
echo.
dir /b /ad "^!*"
@timeout /t 1 /nobreak>nul
echo.
echo cd ^^^^^^^^^^^!Myfolder 7 more caret to show double caret ecaping ^^! in echo - 13 carets used in that line.
echo cd ^^!Myfolder double caret to escape ^^!
echo cd "^!Myfolder" single caret inside double quotes to escape ^^!
cd ^^!Myfolder
@timeout /t 1 /nobreak>nul
echo.
echo ^^^!cd^^^!: !cd!
echo %%cd%%: %cd:!=^^!%
@timeout /t 1 /nobreak>nul
endlocal
echo.
echo %%cd%% and ^!cd^! after endlocal:
@timeout /t 1 /nobreak>nul
echo %cd%
echo !cd!
exit /b 0