Я пытаюсь создать пакетные файлы, которые:
- находит все папки, содержащие определенный файл (_extern.inf) <- WORKING </li>
- Убедитесь, что имя папки содержитровно X число разделителя.В противном случае игнорировать файл (т. Е. Если имя папки не соответствует ожидаемому формату, игнорировать папку) <- НЕ РАБОТАЕТ </li>
- Разбивает имя папки по разделителю и использует одну из подстрок, чтобы указать путь для перемещения папки.на <- РАБОТАЕТ </li>
У меня все работает, кроме чека.Я видел Batch File Count все вхождения символа в строке , но мне кажется, что он не работает (% count% пуст).Я думаю, из-за вложенного цикла.Также кажется, что разрыв цикла для файлов, которые не соответствуют, не является тривиальным ...
Это %%~ni
, который я хотел бы проверить, содержит ли %expect_delims%
вхождения %delim%
.Если нет, переходите к следующей папке.
@echo off
REM No trailing spaces!
set "infolder=input_path"
set "outfolder=output_path"
set "delim=_"
set "expect_delims=2"
REM Resursively look for folders with _extern.inf files
for /d /r "%infolder%" %%i in (*) do @if exist %%i\_extern.inf (
REM echo the folder is %%i
REM tokens decide which part to take of the split string.
REM "tokens=1,3" would take first and third and make %%b available
for /F "tokens=1 delims=%delim%" %%a in ("%%~ni") do (
REM Create project folder if doesn't exist
if not exist "%outfolder%\%%a.raw\Data\" (
echo creating folder %outfolder%\%%a.raw\Data
mkdir "%outfolder%\%%a.raw\Data"
)
REM move folder if doesn't exist
if exist "%outfolder%\%%a.raw\Data\%%~nxi" echo raw folder already exists!
if not exist "%outfolder%\%%a.raw\Data\%%~nxi" (
echo Moving "%%~fi" to "%outfolder%\%%a.raw\Data\%%~nxi"
move "%%~fi" "%outfolder%\%%a.raw\Data\%%~nxi"
)
)
)