как обсуждалось в другом потоке Как избежать cmd.exe, интерпретируя специальные символы оболочки, такие как < > ^ получить все параметры из командной строки непросто.
Простой
set var=%1
set "var=%~1"
недостаточно, если у вас есть запрос типа
myBatch.bat abc"&"^&def
У меня есть одно решение, но ему нужен временный файл, и он также не является доказательством пули.
@echo off
setlocal DisableDelayedExpansion
set "prompt=X"
(
@echo on
for %%a in (4) do (
rem #%1#
)
) > XY.txt
@echo off
for /F "delims=" %%a in (xy.txt) DO (
set "param=%%a"
)
setlocal EnableDelayedExpansion
set param=!param:~7,-4!
echo param='!param!'
Сбой с чем-то вроде myBatch.bat% a, он отображает 4 не % a
в этой ситуации будет работать простое эхо% 1.
Это, очевидно, for-loop, но я не знаю, как это изменить.
Возможно, существует еще одно простое решение.
Мне не нужно это, чтобы решить настоящую проблему, но мне нравятся решения, которые являются пуленепробиваемыми в каждой ситуации не только в большинстве случаев.