Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подстановка значения в цикле FOR

Ответить
Настройки темы
CMD/BAT - [решено] Подстановка значения в цикле FOR

Аватара для tr011_tmn

Ветеран


Автор проектов


Сообщения: 1002
Благодарности: 295

Профиль | Отправить PM | Цитировать


доброго времени суток коллеги.

Прошу помощи в одном моменте, пытаюсь реализовать следующую конструкцию
Код: Выделить весь код
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) передавалось в SET bName=backup_%Y%.%M%.%Db%.7z.
Причем если включить отображение на экран происходящего то я вижу в строке IF %%B LSS 10 (SET Db=0%%B) ELSE (SET Db=%%B) правильные значения.

Подскажите что делаю не так.

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 12:02, 01-04-2016

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Одни и те же грабли, каждый божий день. Либо выносите блок кода из-за скобок, либо применяйте инструкцию:
Код: Выделить весь код
setlocal enabledelayedexpansion
Код: Выделить весь код
@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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для tr011_tmn

Ветеран


Автор проектов


Сообщения: 1002
Благодарности: 295

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Либо выносите блок кода из-за скобок »
подскажите какой код блока, ибо

использовал (просто забыл указать что использую):SetLocal EnableDelayedExpansion

и при замене % на ! получаю теперь на выходе стрку типа:
Код: Выделить весь код
IF 1 LSS 10 (SET Db=01 ) ELSE (SET Db=1 )
SET bName=backup_2016.04.!Db!.7z
SET bNameR=backup_FED_2016.04.!Db!.WRK.7z
pause

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 12:35, 01-04-2016 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Приблизительно так (не проверял, просто вынес тело цикла наружу)
Код: Выделить весь код
@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


Аватара для tr011_tmn

Ветеран


Автор проектов


Сообщения: 1002
Благодарности: 295

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Приблизительно так (не проверял, просто вынес тело цикла наружу) »
пасибо большое, все заработало. даже превзошло все ожидания.

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 14:01, 01-04-2016 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Подстановка значения в цикле FOR

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход