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

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

Ответить
Настройки темы
CMD/BAT - [решено] cmd и echo внутри цикла

Пользователь


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

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


День добрый.
Видимо глаз совсем замылился и не вижу ошибку.
Код: Выделить весь код
set "SOFT_version=1.2.3.4"
setlocal enabledelayedexpansion
set count_patch=0
for /L %%n in (1,1,100) do (
set /a count_patch+=1
set "patch_number=!count_patch!"
set "pname=!SOFT_Version!-!patch_number!"
set "path_patch="Z:\SOFT версии\Патчи\!pname!""
set "folder=!path_patch!"
echo !folder!
pause
cd !folder!>nul
if /i !errorlevel! EQU 1 (set /a count_patch-=1
msg * Установлено !count_patch! фиксов для верcии !SOFT_version!
exit
) else (
echo установка патча произведена>Z:\!--Logs--!\update_SOFT_fix\%computername%.txt
)
и вот косяк в строчке
Код: Выделить весь код
echo установка патча произведена>Z:\!--Logs--!\update_SOFT_fix\%computername%.txt
при отключенном @echo off
на экране видно что отрабатывает это как
Код: Выделить весь код
echo установка патча произведена 1>Z:\!--Logs--!\update_SOFT_fix\%computername%.txt
и соответственно запись в файл не происходит.

в чем может быть дело?

Отправлено: 14:51, 01-09-2020

 

Аватара для Elven

Ветеран


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

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


Z похоже на сетевой диск. Пользователь от имени которого выполняется команда видит этот диск? (в "видит" я вкладываю:
1. разрешена ли запись для шары для этого пользователя
2. есть ли соответствующие NTFS права на этой шаре
3. примаплен ли диск)
ну и главный вопрос - где объявляется переменная !--Logs--!?
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:32, 01-09-2020 | #2



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

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


Пользователь


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

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


Цитата Elven:
Z похоже на сетевой диск. Пользователь от имени которого выполняется команда видит этот диск? (в "видит" я вкладываю:
1. разрешена ли запись для шары для этого пользователя
2. есть ли соответствующие NTFS права на этой шаре
3. примаплен ли диск)
ну и главный вопрос - где объявляется переменная !--Logs--!? »
да, диск сетевой. примаплен и пользователь видит и имеет все соответствующие права
!--Logs--! это папка в которую падают куча логов, в том числе и планируется об апдейте софта

попробовал и изменил путь до сохранения логов - не смотря на то, что на экране все равно выводит
Код: Выделить весь код
echo установка патча произведена 1>Z:\%computername%.txt
стало наконец то писать лог.

теперь вопрос, как все таки заставить писать логи именно в папку Z:\!--Logs--!\update_SOFT_fix\
именно используя папку !--Logs--!

Отправлено: 15:57, 01-09-2020 | #3


Аватара для Elven

Ветеран


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

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


экранировать !. сколь я помню в cmd это делается при помощи ^, т.е. по пути
Код: Выделить весь код
Z:\^!--Logs--^!\update_SOFT_fix\
должно писаться нормально, если дело было в этом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:08, 01-09-2020 | #4


Пользователь


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

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


разобрался.

до цикла объявил
set "Logs_Folder=^!--Logs--^!"

ну и в echo стало

Код: Выделить весь код
echo установка патча произведена>Z:\!LogFolders!\update_SOFT_fix\%computername%.txt
Elven, огромное спасибо за помощь!
Второй день бился с этой проблемой. Реально - замылился глаз

Отправлено: 16:10, 01-09-2020 | #5


Ветеран


Contributor


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

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


Если без setlocal enabledelayedexpansion то имя папки !--Logs--! воспримется правильно
Тупо переписал Ваш код
Код: Выделить весь код
@Echo Off
cls
	Set "SOFT_version=1.2.3.4"
	For /L %%n in (1,1,100) Do (
		Set /a count_patch+=1
		Call Set "patch_number=%%count_patch%%"
		Call Set "pname=%SOFT_Version%-%%patch_number%%"
		Call Set "path_patch=Z:\SOFT версии\Патчи\%%pname%%"
		Call Set "folder=%%path_patch%%"

Call Echo "%%folder%%"
		Call CD "%%folder%%">nul 2>nul || ( 
			Call Set /a count_patch-=1
			Call msg * Установлено %%count_patch%% фиксов для верcии %SOFT_version%
			Exit /B 1
		)
		Echo установка патча произведена>Z:\!--Logs--!\update_SOFT_fix\%computername%.txt
	)
Pause
Exit /B
Однако, ИМХО, Ваш код можно упростить
Код: Выделить весь код
@Echo Off
cls
	Set "SOFT_version=1.2.3.4"
	For /L %%n in (1,1,100) Do (
		If Not Exist "Z:\SOFT версии\Патчи\%SOFT_Version%-%%n" (
			Set /A count_patch=%%n-1
			Call msg * Установлено %%count_patch%% фиксов для верcии %SOFT_version%
			Exit /B 1
		) 
		Echo установка патча произведена>Z:\!--Logs--!\update_SOFT_fix\%computername%.txt
	)
Pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:39, 01-09-2020 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Комментарий внутри цикла FOR Sisin Скриптовые языки администрирования Windows 22 19-12-2017 14:51
CMD/BAT - [решено] © и ® в ECHO cmd tr011_tmn Скриптовые языки администрирования Windows 5 08-10-2015 19:51
CMD/BAT - Переменная внутри цикла VAbramyak Скриптовые языки администрирования Windows 9 06-06-2014 15:59
CMD/BAT - [решено] %errorlevel% внутри цикла всегда 0 apozlevich Скриптовые языки администрирования Windows 5 22-11-2013 18:55
CMD/BAT - [решено] Условия внутри цикла for blackmane Скриптовые языки администрирования Windows 4 02-08-2012 10:01




 
Переход