Войти

Показать полную графическую версию : Цикл в Цикле


deamon7
07-09-2011, 23:26
Cуть проблемы в следующем.
Организован цикл, который просматривается файл и при нахождении нужного значения организовывается второй цикл,
у которого в значение SKIP нужно передать значение счетчика(переменная n) который считается в первом цикле.


@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set /a n = 0
for /f "delims=" %%a in (файл) do (
set /a n = n + 1
if %%a==значение (
for /f "skip=!n! delims=" %%b in (файл) do (...)
)
)
.....

Foreigner
08-09-2011, 06:44
deamon7,
Выноси второй цикл наружу:

@echo off
SETLOCAL

for /f "delims=" %%a in (файл) do call:label "%%a"
........
goto:eof

:label
set /a n+=1
if %1=="значение" (

for /f "skip=%n% delims=" %%b in (файл) do (...)

)

shustrik86
13-04-2023, 20:30
Доброго дня

for /d %%A IN (C:\Users\*) DO for /d %%B IN (%%A\AppData\Local\Mozilla\Firefox\Profiles\*) del /S /Q /F %%B\cache2\*.*

как разрулить такую задачку?

Serguei Kouzmine
14-04-2023, 04:52
чтоб получить совет покажите как сами пробовали решить

DJ Mogarych
14-04-2023, 09:26
Powershell:

del "$env:SystemDrive\Users\*\AppData\Local\Mozilla\Firefox\Profiles\*\cache2\*" -Recurse -Force -WhatIf

Уберите -WhatIf, чтобы реально удаляло.

megaloman
15-04-2023, 09:04
shustrik86, Как минимум, во втором For пропустили Do
Неплохо бы пути брать в кавычки.
Не понимаю стремления записать всё в одну строку - код нечитаемый и ошибок не видно
Вариант@Echo Off
for /d %%A IN ("C:\Users\*") DO (
for /d %%B IN ("%%A\AppData\Local\Mozilla\Firefox\Profiles\*") Do (
Pushd "%%B\cache2" && (2>nul echo Rd /Q /S "%%B\cache2" &Popd)
)
)
Exit /B

Для реальной очистки echo удалите




© OSzone.net 2001-2012