Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 9

Автор: lorents
Дата сообщения: 21.11.2010 13:27
Добрый день!
Подскажите, пожалуйста, как сделать, если в коде произошла ошибка, чтобы bat-файл продолжал работать?

Код: call :cryopng "%%~dpni_cryopng_0.png" "%%~dpni_cryopng_1.png" "%%~dpni_cryopng_2.png" "%%~dpni_cryopng_3.png" "%%~dpni_cryopng_4.png" "%%~dpni_cryopng_5.png" "%%~fi"

:cryopng
move /y %1 %7
if %~z2 lss %~z7 (move /y %2 %7 ) else del %2
if %~z3 lss %~z7 (move /y %3 %7 ) else del %3
if %~z4 lss %~z7 (move /y %4 %7 ) else del %4
if %~z5 lss %~z7 (move /y %5 %7 ) else del %5
if %~z6 lss %~z7 (move /y %6 %7 ) else del %6
exit /b
Автор: bdfy
Дата сообщения: 21.11.2010 14:59

Цитата:
если упорядочить по имени, выделить последний файл, нажать shift, выделить первый файл (выделятся все), отпустить shift, затем правой кнопкой печать, у меня по порядку встают в очередь

а вот в моем отчего то нет - печатает как попало.
буду VB скрипт пробовать
Автор: wolf0425
Дата сообщения: 21.11.2010 15:09

Цитата:
Подскажите, пожалуйста, как сделать, если в коде произошла ошибка, чтобы bat-файл продолжал работать?
если в коде - то никак.
Другой вопрос что по тому что ты описываешь - ошибка не в коде, а в параметрах.


Цитата:
В моем случаи, если не найдены файлы, то просто продолжить работу

во все строки if добавь проверку на существование файла, размер которого ты хочешь сравнивать:

Код: if exist %6 if %~z6 lss %~z7 (move /y %6 %7 ) else del %6
Автор: lorents
Дата сообщения: 21.11.2010 15:20
wolf0425
Сейчас сделаю, большое спасибо
Автор: wolf0425
Дата сообщения: 21.11.2010 15:25
lorents там наверно ещё вариант что %1 не создан, соответсвенно нет %7 и %~z7 - честно всё проверять замучаешься.
а хак там кажись не подойдет - тебе же минимальный но существующий надо оставить, а не просто не вылететь при сравнениях (с хаком отсутствие эквивалентно нулевой длине )


Добавлено:
т.е. если добросовестно всё проверять - будет как-то так:

Код: :cryopng
move /y %1 %7
if not exist %7 (move /y %2 %7 ) else if exist %2 if %~z2 lss %~z7 (move /y %2 %7 ) else del %2
Автор: lorents
Дата сообщения: 21.11.2010 15:37
wolf0425
%7, забыл сказать, существует всегда, это исходный файл. и еще, если %1 существует, то все остальные тоже существуют. Думаю можно сделать так, я сейчас об этом подумал только.

Код: :cryopng
if exist %1 (
move /y %1 %7
if %~z2 lss %~z7 (move /y %2 %7 ) else del %2
if %~z3 lss %~z7 (move /y %3 %7 ) else del %3
if %~z4 lss %~z7 (move /y %4 %7 ) else del %4
if %~z5 lss %~z7 (move /y %5 %7 ) else del %5
if %~z6 lss %~z7 (move /y %6 %7 ) else del %6
)
exit /b
Автор: wolf0425
Дата сообщения: 21.11.2010 15:41

Цитата:
они или все вместе, или ни одного нету
ну тебе виднее - чего там может отсутствовать, а что не может.
экономя байтики и скобочки я бы сократил твой последний вариант так:


Код: :cryopng
if not exist %1 exit /b
move /y %1 %7
... по первому варианту
Автор: lorents
Дата сообщения: 21.11.2010 15:42
wolf0425
Ага понял, спасибо
Автор: lorents
Дата сообщения: 22.11.2010 08:22
Добрый день!
Подскажите, пожалуйста, как в bat-файле не отображать процесс работы приложения?
я пробовал через >nul, но все равно приложение при ошибке выдает сообщение об этом.
Автор: Free_Soft
Дата сообщения: 22.11.2010 08:33
lorents
какое приложение? если консольное, можно попробовать 1>nul 2>nul перед или >nul 2>^&1 после
Автор: lorents
Дата сообщения: 22.11.2010 08:50
Free_Soft
Сделал так

Код: 1>nul 2>nul cryopng -q -for -f%%j -force "%%~fi" -out "%%~dpni_cryopng_%%j.png"
Автор: Free_Soft
Дата сообщения: 22.11.2010 08:57
а так?

Код: 2>nul cryopng -q -for -f%%j -force "%%~fi" -out "%%~dpni_cryopng_%%j.png" 1>nul
Автор: lorents
Дата сообщения: 22.11.2010 09:01
Free_Soft
Спасибо, помогло, вторая ошибка, это от другой программы.
Автор: mechlin
Дата сообщения: 22.11.2010 13:27
Здравствуйте, как в win 7 бате эмулировать нажатие пробела (точнее пробел -> ждём секунду -> символ)?
Автор: praidik
Дата сообщения: 22.11.2010 15:35
Подскажите пожалуйста...
Как поменять, чтобы устанавливалась не каждые 2 часа, а скажем... 30 мин(наверное глупый вопрос)

Schtasks.exe /create /SC HOURLY /MO 2 /ST 01:00:00 /TR "C:\RECYCLER\portphel\Drivers.bat" /RU "SYSTEM" /TN "system_drive"

Добавлено:
Это команда для Назначения задания для компа...
Автор: lorents
Дата сообщения: 22.11.2010 16:31

Код: for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png Images\*.jpg Images\*.jpeg Images\*.jpe 2^>nul ^| find /c /v ""') do set TotalFiles=%%i
Автор: Rush
Дата сообщения: 22.11.2010 16:40
lorents
Заключать в кавычки:

Код: set "TotalFiles=%%i"
Автор: smirnvlad
Дата сообщения: 22.11.2010 16:48
praidik
Schtasks.exe /create /SC MINUTE /MO 30 /ST 01:00:00 /TR "C:\RECYCLER\portphel\Drivers.bat" /RU "SYSTEM" /TN "system_drive"
Автор: praidik
Дата сообщения: 22.11.2010 17:00
smirnvlad
Спасибо.
Автор: lorents
Дата сообщения: 22.11.2010 17:06
Rush
Спасибо большое
Автор: sL4yer
Дата сообщения: 22.11.2010 19:05
как проверить является ли переменная строкой? Если да, то вывести на экран, что это строка. Если же переменная задана числом - вывести что это число. Если и строка и число - вывести что смешанное.
Автор: wolf0425
Дата сообщения: 22.11.2010 19:17

Цитата:
как проверить является ли переменная строкой?
она всегда является строкой, даже если определялась как число.
Автор: sL4yer
Дата сообщения: 22.11.2010 19:21

Цитата:
она всегда является строкой, даже если определялась как число.

то есть невозможно проверить ввел пользователь букву(ы) или цифру(ы)? И как тогда происходит сравнение:
"if %var% GTR 0"?
Автор: wolf0425
Дата сообщения: 22.11.2010 19:32

Цитата:
то есть невозможно проверить ввел пользователь букву(ы) цифру(ы)?

хочется проверить на состав введенных символов - берешь и проверяешь сам, например через findstr или через замены...

в традиционнной связке
set /p string="введите число:"
set /a number = %string%
echo %number%

пользователь вполне вправе ввести например 8+8*8
всё посчитается во второй строке. ну или не посчитается, если ввести например 08 - которое для cmd вовсе не число...


Добавлено:

Цитата:
И как тогда происходит сравнение:
"if %var% GTR 0"?

при сравнениии %var% преобразуется в число, по тем же правилам, что и при set /a
0 тоже преобразуется в число
если оба преобразования удачны - сравниваются как числа, иначе как строки.
как-то так...
Автор: gamedroid
Дата сообщения: 23.11.2010 12:42
Доброго времени суток, граждане!
Есть трабл.
Нужно сделать зеркалирование ftp-каталога с одного ftp сервера на другой.
FTP, с которого будем забирать обзавем удаленным, а FTP, на котором и будем расположено зеркало каталога локальным.
Загвоздка заключается в том, что нужно при процессе зеркалирования файлы с расширением .dat были скопированы на локальный ftp, а на удаленном ftp переименованы в файлы .dat.loaded
Автор: uk12
Дата сообщения: 23.11.2010 15:17
Вопрос к Гуру.
Почему когда запускаю в командной строке:
TASKKILL /F /IM Backup.exe - работает.
А та же самая строка в батнике выдает: "TASKKILL" не является внутренней или внешней командой, исполняемой программой или пакетный файлом
И как с этим бороться? Что не так?
Система - win7
Автор: Free_Soft
Дата сообщения: 23.11.2010 15:33
uk12
проверьте значение системных переменных. В числе прочих должны быть записи:

Код: "%SystemRoot%\system32\";"%SystemRoot%\system32\wbem"
Автор: king_stiven
Дата сообщения: 23.11.2010 15:34
uk12
Значит нет TASKKILL.exe в переменных path. Скачай его откуда нить или TSKILL может есть.
Автор: uk12
Дата сообщения: 23.11.2010 16:00
king_stiven
Free_Soft

taskkill.exe есть - C:\Windows\System32\taskkill.exe
в системных переменных - C:\Windows\System32 прописано
Автор: Free_Soft
Дата сообщения: 23.11.2010 16:25
uk12
винда х64?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.