|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подстановка значения в цикле FOR |
|
CMD/BAT - [решено] Подстановка значения в цикле FOR
|
Ветеран Сообщения: 1002 |
доброго времени суток коллеги.
Прошу помощи в одном моменте, пытаюсь реализовать следующую конструкцию set D=%date:~0,2% SET M=%date:~3,2% set /a Ma=1%M% - 101 IF %Ma% LSS 10 (SET Mm=0%Ma%) ELSE (SET Mm=%Ma%) SET Y=%date:~6% :: FOR /L %%B in (1,1,31) DO ( IF NOT EXIST "%Srv%\backup" (MD "%Srv%\backup" 1>Nul 2>&1) IF %%B LSS 10 (SET Db=0%%B) ELSE (SET Db=%%B) SET bName=backup_%Y%.%M%.%Db%.7z SET bNameR=backup_FED_%Y%.%M%.%Db%.WRK.7z pause Call :_ChkRzm REN "%Srv%\backup\%bName%" "%bNameR%" 1>Nul 2>&1 FORFILES /P "%Srv%\backup" /M *.* /S /D -31 /C "CMD /c DEL /q @PATH" ) :: :: ===================================================================================================== :: :: :_ChkRzm :: SET Size=100 :: FOR /F %%a in ('dir /b /s /a-d "%Srv%\backup\%dName%"') do (SET x=%%~za) :: IF %x% LEQ %Size% (DEL /S /Q "%Srv%\backup\%dName%" 1>Nul 2>&1) :: GoTo :EOF :: :: ===================================================================================================== :: :: Причем если включить отображение на экран происходящего то я вижу в строке IF %%B LSS 10 (SET Db=0%%B) ELSE (SET Db=%%B) правильные значения. Подскажите что делаю не так. |
|
------- Отправлено: 12:02, 01-04-2016 |
Ветеран Сообщения: 1758
|
Одни и те же грабли, каждый божий день. Либо выносите блок кода из-за скобок, либо применяйте инструкцию:
@echo off setlocal enabledelayedexpansion .... FOR /L %%B in (1,1,31) DO ( IF NOT EXIST "%Srv%\backup" (MD "%Srv%\backup" 1>Nul 2>&1) IF %%B LSS 10 (SET Db=0%%B) ELSE (SET Db=%%B) SET bName=backup_%Y%.%M%.!Db!.7z SET bNameR=backup_FED_%Y%.%M%.!Db!.WRK.7z pause Call :_ChkRzm REN "%Srv%\backup\!bName!" "!bNameR!" 1>Nul 2>&1 FORFILES /P "%Srv%\backup" /M *.* /S /D -31 /C "CMD /c DEL /q @PATH" ) ..... |
Отправлено: 12:15, 01-04-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1002
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
использовал (просто забыл указать что использую):SetLocal EnableDelayedExpansion и при замене % на ! получаю теперь на выходе стрку типа: |
|
------- Отправлено: 12:35, 01-04-2016 | #3 |
Ветеран Сообщения: 1758
|
Приблизительно так (не проверял, просто вынес тело цикла наружу)
@echo off setlocal set D=%date:~0,2% set M=%date:~3,2% set /a Ma=1%M% - 101 IF %Ma% LSS 10 (SET Mm=0%Ma%) ELSE (SET Mm=%Ma%) set Y=%date:~6% FOR /L %%B in (1,1,31) DO call:0 %%B goto:eof :0 IF NOT EXIST "%Srv%\backup" (MD "%Srv%\backup" 1>Nul 2>&1) IF %1 LSS 10 (SET Db=0%1) ELSE (SET Db=%1) SET bName=backup_%Y%.%M%.%Db%.7z SET bNameR=backup_FED_%Y%.%M%.%Db%.WRK.7z pause SET Size=100 FOR /F %%a in ('dir /b /s /a-d "%Srv%\backup\%dName%"') do (SET x=%%~za) IF %x% LEQ %Size% (DEL /S /Q "%Srv%\backup\%dName%" 1>Nul 2>&1) REN "%Srv%\backup\%bName%" "%bNameR%" 1>Nul 2>&1 FORFILES /P "%Srv%\backup" /M *.* /S /D -31 /C "CMD /c DEL /q @PATH" |
Отправлено: 12:43, 01-04-2016 | #4 |
Ветеран Сообщения: 1002
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
||
------- Отправлено: 14:01, 01-04-2016 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2007 - [решено] Excel. Подстановка буквенного значения цифрам | Bio_Hazard | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 08-06-2013 10:59 | |
.NET - [решено] Как в цикле на каждом шаге изменять имя значения в setings.setings ? | Sadhacker | Программирование и базы данных | 24 | 17-06-2012 20:18 | |
PowerShell - Подстановка из файла | Butunin Klim | Скриптовые языки администрирования Windows | 3 | 10-04-2012 03:05 | |
[решено] подстановка в word | garanov | AutoIt | 0 | 27-09-2010 09:35 | |
Подстановка паролей на почтах | naum7 | Хочу все знать | 3 | 27-06-2008 19:17 |
|