Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
hawkeye87
0 / 0 / 0
Регистрация: 21.07.2016
Сообщений: 6
#1

Использование вложенной команды FOR

21.07.2016, 19:14. Просмотров 294. Ответов 8
Метки нет (Все метки)

Всем доброго времени суток!

есть каталог с подкаталогами, есть файл tamplate.txt. Хочу добиться чтобы скрипт сканил содержимое файла tamplate.txt и в том случае если в его строке есть совпадение с названием подкаталога то копировать подкаталог в другую папку.

Windows Batch file
1
for /l %i in (1,1,19) do (for /F "tokens=%i%" %A in (f:\cmd\template.txt) do (robocopy blacklists\%A new_blacklists\%A /COPYALL /e /xf urls /mt:32 /r:3 /w:5))
Не могу разобраться с передачей счетчика i из родительского цикла в дочерний. Дочерний цикл не видит i. Плюс хотелось чтобы родительский цикл заканчивал работу по истечению перебираемых слов в дочернем цикле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2016, 19:14
Ответы с готовыми решениями:

Использование команды Echo
Здравствуйте.. почему такая команда не работает лог пустой ...почему? спасибо.

Использование команды Chdir (Cd)
Заметил, что некоторые используют такую команду: CD /d "%~dp0." т.е. ставят...

Многоразовое использование команды
Вот выполняю команду(для копирования папок и файлов из каталога) xcopy...

Повторное использование команды PAUSE
Возникла такая проблема: в скрипте есть необходимость использовать команду...

Как установить строковую переменную среды cmd (с использование команды set) в батнике?
Казалось бы, всё просто //батник set /p per=x или //батник set /p...

8
b0gus
255 / 157 / 70
Регистрация: 17.03.2014
Сообщений: 464
21.07.2016, 23:37 #2
Цитата Сообщение от hawkeye87 Посмотреть сообщение
Не могу разобраться с передачей счетчика i из родительского цикла в дочерний. Дочерний цикл не видит i
для вашего кода, не разбираясь в его корректности, только синтаксис, должно быть так:
Windows Batch file
1
for /l %i in (1,1,19) do (for /F "tokens=%i" %A in (f:\cmd\template.txt) do (robocopy blacklists\%A new_blacklists\%A /COPYALL /e /xf urls /mt:32 /r:3 /w:5))
0
hawkeye87
0 / 0 / 0
Регистрация: 21.07.2016
Сообщений: 6
22.07.2016, 01:15  [ТС] #3
"Непредвиденное появление: %i"
0
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 529
22.07.2016, 08:13 #4
%%i
%%A
0
hawkeye87
0 / 0 / 0
Регистрация: 21.07.2016
Сообщений: 6
22.07.2016, 13:51  [ТС] #5
Непредвиденное появление: %%i.

Подправил код для читабельности:
Windows Batch file
1
2
3
4
5
6
7
for /l %i in (1,1,19) do (
        for /F "tokens=%i%" %A in (f:\cmd\template.txt) do (
            
            robocopy f:\cmd\blacklists\%A f:\cmd\new_blacklists\%A 
        )
 
    )
0
hawkeye87
0 / 0 / 0
Регистрация: 21.07.2016
Сообщений: 6
23.07.2016, 16:41  [ТС] #6
удалось перекинуть значение в for и оно меняется но tokens все равно равняется одному значению,
и отсюда копирует не следующую папку а одну и ту же =(
Windows Batch file
1
2
3
4
5
6
setlocal enabledelayedexpansion
set /a b=1
for /l %i in (1,1,2) do (
    set /a b=%b%&set /a %b%+=1&
    for /F "tokens=%b%" %A in (f:\cmd\template.txt) do (
         robocopy blacklists\%A new_blacklists\%A))
0
YuS_2
Любознательный
731 / 524 / 171
Регистрация: 10.03.2016
Сообщений: 1,231
24.07.2016, 09:05 #7
hawkeye87,
Почитайте форум наконец, здесь, например, много "вкусного" есть...
1
hawkeye87
0 / 0 / 0
Регистрация: 21.07.2016
Сообщений: 6
24.07.2016, 21:55  [ТС] #8
Если не сложно подскажите faq по изменению глобальной переменной из цыкла.

Добавлено через 34 минуты
уже разобрался, спасибо
0
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 529
25.07.2016, 12:45 #9
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
for /l %%i in (1,1,19) do call :tokens %%i
exit/b
 
:tokens
for /f "tokens=%1" %%A in (template.txt) do (
    echo %1 %%A
    rem robocopy f:\cmd\blacklists\%%A f:\cmd\new_blacklists\%%A
)
0
25.07.2016, 12:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2016, 12:45

После выполнения определённой команды не выполняются последующие команды
Объясните, пожалуйста, почему может останавливаться выполнение второй и далее...

Вывести результат выполнения команды HELP в текстовый файл так, чтобы у каждой команды был порядковый номер
Всем привет, нужна помощь! Необходимо команду help вывести в текстовый...

Стереть содержимое папки, за исключением одной вложенной папки
В лаборатории стоят комьютеры. Посетители постоянно копируют на компьютеры в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru