Вы можете вставить строки в приглашении CMD, которые длиннее, чем отображается, просто прокручивает вправо (или влево в зависимости от того, как вы их просматриваете)
Однако вы используете %%
в своемимена переменных, что означает, что вы должны запускать это внутри скрипта CMD / BAT.Что позволит использовать строки еще длиннее.
Так что все должно быть в порядке:
REM Single Line:
FOR /R %%D in (Debug,.vs) DO @( ECHO Checking: "%%~D" & IF EXIST "%%~D" ( ECHO. Found! - Removing: "%%~D" ... & RD /S /Q "%%~D" ) )
или меньше, если вам действительно это нужно:
REM Even Smaller Single Line:
FOR /R %%D in (Debug,.vs) DO @(IF EXIST "%%~D" (RD /S/Q "%%~D"))
Меньше - игнорировать неошибки каталога
REM Even Smaller Single Line:
FOR /R %%D in (Debug,.vs) DO @(RD /S/Q "%%~D") 2>Nul
Самая маленькая одиночная строка, но вывод будет выглядеть довольно грязно
REM Even Smaller Single Line:
FOR /R %%D in (Debug,.vs) DO (RD/S/Q "%%D")
Теперь, если по какой-либо причине вы хотите сделать этоКак можно меньше, и вы работаете внутри сценария cmd, вы можете помещать возврат каретки после каждого открытия и закрытия Paren, и вы можете помещать возврат каретки между терминами в ваших критериях.
Многострочный:
FOR /R %%D in (
Debug
.vs
) DO @(
ECHO Checking: "%%~D"
IF EXIST "%%~D" (
ECHO. Found! - Removing: "%%~D" ...
RD /S /Q "%%~D"
)
)
По какой-либо причине почти никто не выполняет вышеперечисленные критерии, но это полностью допустимый параметр.
Кратчайшие строки в многострочном файле, которые являются возможными:
@ECHO OFF
FOR /R %%D in (
Debug
.vs
) DO (
RD /S /Q "%%~D"
)
And Are в версиях CLI CMD Если вы доверяете, вы можете вставить больше, чем видите:
FOR /R %D in (Debug,.vs) DO @( ECHO Checking: "%~D" & IF EXIST "%~D" ( ECHO. Found! - Removing: "%~D" ... & RD /S /Q "%~D" ) )
И меньше, если не можете:
FOR /R %D in (Debug,.vs) DO @(IF EXIST "%~D" (RD/S/Q "%D")
И как я уже говорил, ВЫ МОЖЕТЕ использовать тот же методВ случае возврата каретки для прямой вставки в приглашение CMD, как правило, люди этого не делают, потому что вероятность вставки в приглашение cmd с большей вероятностью будет разбита, но код вашего требования довольно прост, поэтому его можно полностью вставить вПодсказка CMD напрямую:
Самая маленькая многострочная версия CMD-Prompt оригинала:
@ECHO OFF
FOR /R %D in (
Debug
.vs
) DO @(
RD /S/Q "%~D"
)
Кроме того, вам нужно использовать FOR /R %D
, только когда выwrite FOR /D /R . %D
CMD просто проигнорирует / D и изменит синтаксис / R, аналогично.не требуется, потому что подразумевается, что вы используете .
, если не выбран базовый каталог.
Если оставить ненужные символы, вы сэкономите три лишних символа:)
FOR /R
автоматически просматривает дерево каталогов, в то время как /D
приходится делать это, используя подстановочный знак, в то время как добавление /R
после /D
по существу заставляет цикл For игнорировать /D
и использовать вместо этого синтаксис /R
и отличается только в том случае, если вы используете подстановочные знаки (которых у вас нет).
Более того:
Как я уже упоминал в комментариях к другому члену, существуют более целесообразные методы поиска каталогов с.vs
или debug
с использованием DIR
, который будет намного быстрее их перечислять, и FindStr
, который будет намного быстрее находить их, чем тестировать, если они существуют.
У меня не было временивчера вечером из-за ненужной дискуссии с этим участником о том, почему добавление /D
к моим перечисленным командам не было необходимым, однако, я помещу первый черновик из них здесь.
Это наименьшая максимальная требуемая длина, возможная без подстановки переменных из манжеты (длина 25 символов), и может быть запущена в строке CMD:
Наименьшая CMD-LINE FindStr v offманжета без подстановки (Len 25):
@ECHO OFF
FOR /F "tokens=*" %A IN (
'DIR
/AD/B/S
^|
FINDStr /I /R
/C:"\\\.vs$"
/C:"\\debug$"
') DO @( RD/S/Q "%A")
На самом деле, есть еще одна вещь, которую мы можем сделать, которая приводит к тому же максимальному размеру, что и предыдущая команда (Len 14), которая неТехнически не используя подстановку переменных, мы можем обернуть ее в другой цикл FOR / F.
Дополнительный цикл только печатает и может быть настроен так, чтобы ничего не делать, что сделает его быстрее, кроме внутреннего или внешнего цикла.можно сделать удаление (я выбрал внутренний цикл)
Наименьший CMD-LINE FindStr v Использование второго цикла без переменной Подстановка (Len 14):
@ECHO OFF
FOR /F %a IN (
'FOR /F
"UseBackQ"
%A IN (
`DIR
/AD/B/S
^^^|
FINDStr /I /R
/C:"\\\.vs$"
/C:"\\debug$"
`^) DO @(
ECHO."%A"
RD /Q/S "%A"
^) ') DO @(
ECHO.Gone: %a)
Если мы хотим попасть в Переменную Подстановку, то минимальная длина строки, вероятно, составляет около 10 символов.
Опубликует это позже