![]() |
Проблема со сложением и выводом строк в bat файле
Здравствуйте.
Пытаюсь получить путь к файлу сложив его из параметра и имени файла. Вот код: @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. |
Зачем вы формируете путь в два прохода? Не проще ли сразу его получать в одной строке, используя параметр и имя нужного файла? В ту же строку можно вставить проверку на то, передается ли параметр вообще.
Код:
@Echo Off |
Убрать пробелы при «set»:
Код:
set daPath=%~f3 |
Спасибо большое. Работает. Так просто ,а мне то даже в голову не пришло что пробелы могут мешать...
В два прохода - это для примера. Это на самом деле переменная из которой будут разные пути получаться. Root к которому разные файлы приписываются. Спасибо ещё раз за ответы. |
Коллеги, дабы не плодить еще одну тему.
Тоже самое либо пишет "Режим вывода команд на экран (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. Прошу покажите в чем ошибка, где не прав, и не так мыслю ? |
Цитата:
По Вашему верхнему "коду" сложно понять Ваш замысел: куча переменных, которые затем нигде не используются. Как организуется log-файл - каждый раз новый с одним и тем же именем? Или, всё-таки его надо дописывать при каждой реиндексации? ИМХО, лучше бы иметь каждый раз новый с датой и временем в имени. Попытался угадать: Код:
@Echo Off |
Время: 00:04. |
Время: 00:04.
© OSzone.net 2001-