Я хочу найти папку, имя которой начинается с поля. FOR
позволяет мне использовать подстановочные знаки:
for /D %%f in ("fld-*") do set FOLDER=%%f
Однако со следующими папками:
.fld-blah\
fld-blahblah\
afld-blah\
он также (несколько неожиданно) находит тот, который начинается, " . "
Я решил протестировать первый символ с помощью оператора DOS LEFT . Похоже, это не работает для переменных FOR
(здесь %%F
), поэтому мне нужно сначала назначить его нормальной переменной. Запустите следующий файл .bat
дважды (вы поймете почему):
@echo off
for /D %%f in ("fld-*") do (
set TEST=%%f
echo f: %%f
echo TEST: %TEST%
echo TEST[0,1]: %TEST:~0,1%
echo.
)
производит следующий вывод:
C:\Users\Bob\Desktop\test>test.bat
f: fld-blahblah
TEST:
TEST[0,1]: ~0,1
f: .fld-blah
TEST:
TEST[0,1]: ~0,1
C:\Users\Bob\Desktop\test>test.bat
f: fld-blahblah
TEST: .fld-blah
TEST[0,1]: .
f: .fld-blah
TEST: .fld-blah
TEST[0,1]: .
TEST
появляется только после того, как группа команд FOR
(...)
завершится.
Так. Может кто-нибудь сказать мне:
- Могу ли я сделать
for
подстановочных знаков игнорировать имена папок, которые начинаются с точки? - Существует ли синтаксис, который я могу использовать для применения оператора
LEFT
к переменнойfor
,%%F
? - Есть ли способ, которым я могу назначить переменную И использовать ее в
(...)
цикле - Есть ли какой-то другой метод, который я могу использовать для достижения своей цели (в DOS я знаю, что могу использовать Powershell, Cygwin и т.д.)?