if %1.==. dir
сломается, если параметр содержит различные символы, такие как "
, <
и т. Д.
if "%1"==""
прервется, если параметр содержит кавычку ("
).
Используйте if "%~1"==""
вместо:
if "%~1"=="" (
echo No parameters have been provided.
) else (
echo Parameters: %*
)
Это должно работать на всех версиях Windows и DOS.
Юнит-тест:
C:\>test
No parameters have been provided.
C:\>test "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"