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

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

Ответить
Настройки темы
CMD/BAT - [решено] Проблема со сложением и выводом строк в bat файле

Новый участник


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

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


Здравствуйте.

Пытаюсь получить путь к файлу сложив его из параметра и имени файла. Вот код:

@echo off

set daPath = %~f3

set daPath = %daPath%\MyFile.txt

echo %daPath%

if exist %daPath% (echo "yes") else (echo "no")

В результате запуска получаю:
Режим вывода команд на экран (ECHO) отключен.

Если убираю echo %daPath% - код вообще ничего не выводит. Пробовал убирать @echo off. Тогда выводит только выполняемые инструкции и ничего из echo.

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

Нужно просмотреть какой путь формируется и выполняется ли проверка в if.

Отправлено: 23:52, 21-03-2012

 

Старожил


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

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


Зачем вы формируете путь в два прохода? Не проще ли сразу его получать в одной строке, используя параметр и имя нужного файла? В ту же строку можно вставить проверку на то, передается ли параметр вообще.
Код: Выделить весь код
@Echo Off
If Not "%~3"=="" (Set daPath=%~dp3MyFile.txt)
Echo %daPath%
If Exist "%daPath%" (Echo "yes") Else (Echo "no")
Вот так у вас работает?

Отправлено: 00:25, 22-03-2012 | #2



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

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


Ветеран


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

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


Убрать пробелы при «set»:
Код: Выделить весь код
set daPath=%~f3
set daPath=%daPath%\MyFile.txt
— они являются значащими символами.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:26, 22-03-2012 | #3


Новый участник


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

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


Спасибо большое. Работает. Так просто ,а мне то даже в голову не пришло что пробелы могут мешать...
В два прохода - это для примера. Это на самом деле переменная из которой будут разные пути получаться. Root к которому разные файлы приписываются.
Спасибо ещё раз за ответы.

Отправлено: 12:58, 22-03-2012 | #4

sno sno вне форума

Новый участник


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

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


Коллеги, дабы не плодить еще одну тему.
Тоже самое либо пишет "Режим вывода команд на экран (ECHO) отключен" либо лога нет совсем, пусто.

Сам код:
@echo off
setlocal enabledelayedexpansion
CHCP 1251
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=Testov
SET PGPASSWORD=TestovPass
FOR /F "usebackq delims=" %%j in (`date /t`) do set tDate=%%~j
FOR /F "usebackq delims=" %%j in (`echo %time:~,-3%`) do set tTime=%%~j
FOR /F "usebackq" %%a IN (`CALL "C:\Program Files\PostgreSQL\14\bin\reindexdb.exe"`) DO (
set result=%%a
echo+ %result% >C:\Users\drweb\Desktop\Reindex.Log
)
pause

В кратции есть скрипт реиндексации БД
CHCP 1251
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=Testov
SET PGPASSWORD=TestovPass
CALL "C:\Program Files\PostgreSQL\14\bin\reindexdb.exe

Меня озадачили сделать автоматизацию...в целом все работает, да только лога нет, могу сделать лог но без даты внутри лога в строке. Пытался сделать и тоже ошибка Echo.
Прошу покажите в чем ошибка, где не прав, и не так мыслю ?

Отправлено: 16:28, 18-04-2022 | #5


Ветеран


Contributor


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

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


Цитата sno:
Прошу покажите в чем ошибка, где не прав, и не так мыслю ? »
Сначала надо было изучить матчасть.
По Вашему верхнему "коду" сложно понять Ваш замысел: куча переменных, которые затем нигде не используются. Как организуется log-файл - каждый раз новый с одним и тем же именем? Или, всё-таки его надо дописывать при каждой реиндексации? ИМХО, лучше бы иметь каждый раз новый с датой и временем в имени. Попытался угадать:
Код: Выделить весь код
@Echo Off
cls
>nul Chcp 1251
	Set "PGhost=localhost"
	Set "PGport=5432"
	Set "PGuser=Testov"
	Set "PGpassword=TestovPass"
	Set Prog="C:\Program Files\PostgreSQL\14\bin\reindexdb.exe"

	Set "Log=C:\Users\drweb\Desktop\Reindex.Log"
	
	>>"%Log%" 2>>&1 (For /f "usebackq delims=" %%p In (`%Prog%`) Do (
		Call Echo %%Date%% %%Time:~0,-3%% %%p
	))
pause
Exit /B
На реальном reindexdb.exe не тестировал - нет его у меня.

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


Последний раз редактировалось megaloman, 19-04-2022 в 08:59.


Отправлено: 08:53, 19-04-2022 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - [решено] Сложение двух строк в bat - файле sunnykey Скриптовые языки администрирования Windows 3 22-02-2012 17:25
VBS/WSH/JS - Удаление строк в REG файле gen0m.rsw Скриптовые языки администрирования Windows 9 28-09-2011 18:03
[решено] Количество строк в файле 0xDEADBEEF AutoIt 3 25-01-2010 21:47
Как оставить в файле Х первых строк? Dan Вебмастеру 10 19-10-2002 00:41




 
Переход