1

Windows CMD シェルは!、ディレクトリ名から " " 文字を取り除いています。

現在の作業ディレクトリが " C:\\!MyFolder"であると仮定します

.CMD ファイル内では、次の構文を使用します。

set _STARTPATH=%CD%
echo %_STARTPATH%

C:\MyFolderバンバン(!)なしで表示されます

これは WinXP から Win8.1 まで共通です。

Q: これに対する回避策を知っている人はいますか?

4

2 に答える 2

2

遅延展開を有効にした場合は、変数展開にも使用する必要があります

set _STARTPATH=!CD!
echo !_STARTPATH!
于 2015-10-03T20:50:56.297 に答える
1

エスケープて変数の検索/置換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
于 2015-10-03T15:37:30.727 に答える