Я хочу знайти папку, назва якої починається fld- . FOR
дозволяє мені використовувати символи:
for /D %%f in ("fld-*") do set FOLDER=%%f
Однак із такими папками:
.fld-blah\
fld-blahblah\
afld-blah\
він також (дещо несподівано) знаходить той, що починається, " . ".
Я вирішив протестувати перший char за допомогою оператора 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 тощо)?
2
Що саме "приховано"? ಠ_ ఠ
—
Synetech
Я б використав XYplorer (www.xyplorer.com), якби я був ти, у нього дуже делікатна вбудована мова сценаріїв. (Так само як пропозиція)
—
Яків Рабінсун
@Synetech Вибачте, що я в режимі Linux - "". папка - це те, що я мав на увазі (звичайно, це не приховано в Windows). Я зміню заголовок.
—
Боб Саммерс
Ага гаразд; що повністю змінює речі. Я хоч ти запитував щось інше . Це дивно, тому що, хоча провідний період зробив би папку безіменною і складається лише з розширення, ви не використовували жодного з
—
Synetech
~
комутаторів, тому вона все одно повинна була працювати. І так, уповільнене розширення легко забути і засмутити, коли це робити. :-/