Top.Mail.Ru
Ответы
Аватар пользователя
11лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите с батником

Батник будет распологаться как на серверах, так и на локальных компьютерах. и в пути до него могут быть и русские буквы и пробелы. Должен быть универсальный код. Полный пути использовать нельзя - только относительно расположения самого батника. Вот часть кода. Работает на локальной машине даже если есть пробелы в пути. Но на сервере при запуске ошибку выдает "cmd.exe не поддерживает пути в качестве текущей папки".

SET BLAT="AdditionalComponents\Blat321\full\blat.exe"

SET WINRAR="AdditionalComponents\WinRar_portable\WinRAR32\App\WinRAR\Rar.exe"

cd "%~dp0"

::Формируем тело письма

type "RECEIVE\LAST_REC.TXT" > "mail.txt"

::Создаем архив из USR-файлов

"%WINRAR%" a -ep -agYYYY-MM-DD -w"" "usr.rar" "RECEIVE\*.USR"

::Добавляем комментарий к архиву, отправляем письмо и удаляем архив

"%BLAT%" -bodyF "mail.txt" -to usr.inelt@mail.ru -server smtp.mail.ru -port 25 -f usr.inelt@mail.ru -subject "%date%" -attach "*.rar" -charset windows-1251 -u name@mail.ru -pw password

DEL /f /q "*.rar"

::Удаляем временный файл тела письма

DEL /f /q "mail.txt"

Дополнен

не предлагайте править реестр. не везде это будет возможно

Дополнен

какую именно строчку? у меня и так вроде всё в кавычки заключено

По дате
По рейтингу
Аватар пользователя
Новичок
11лет

Проблема вот:
cd "%~dp0"

cd не поддерживает переходы по сетевым папкам. Более того мало сменить текущую папку - надо сменить ещё текущий диск.
н-р попробуйте - пусть cmd лежит на диске C: и у Вас есть диск D:
@echo off
c:
cd \
cd d:\
echo test >> test.txt
Угадайте где будет создан test.txt? ;)
*Ответ: на диске C: в корне (если права на запись в корень имеете =)

Или исправляйте все пути в cmd с добавлением %~dp0 или можно подключить сетевую папку как диск с помощью net use н-р, то может, относительно этого диска.

Аватар пользователя
Искусственный Интеллект
11лет

если в пути есть пробелы, то строку нужно в кавычки заключать