Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd) 2

Автор: El Sanchez
Дата сообщения: 03.03.2009 09:35
Переменная %var% должна быть изменена на !var!
Автор: TechnicsKuzya
Дата сообщения: 03.03.2009 13:28
Может кому пригодится, тут описан авторский скрипт для сборника обновлений...
Автор: vitrzn
Дата сообщения: 03.03.2009 19:14
Помогите советом!
есть батник:

md \1\
md \2\2\
md \3\3\3\

потом идёт сортировка файлов по созданым папкам
но не всегда есть файлы которые нужно переместить в соот папку
и в итоге остаётся вложенная пустая папка

Вопрос! Как можно удалить пустую папку, в том числе и вложенную
В итоге должно остаться ТОЛЬКО папки с файлами.
Автор: KYMichael
Дата сообщения: 03.03.2009 20:32
Maza_Faka, El Sanchez

Спасибо!

Оказалось, что я сам ступил

Автор: Maza_Faka
Дата сообщения: 04.03.2009 11:43
vitrzn

Цитата:
Помогите советом!

Попробуй так:

Код:
@Echo Off

Set "Folder=c:\Test"

Call :SubDir "%Folder%"
GoTo :EOF

:SubDir
For /D %%B In ("%~1\*.*") Do (
Call :SubDir "%%B"
Dir "%%B" /B /A:-D>Nul 2>&1 || RD /Q "%%B">Nul 2>&1
)
Автор: KYMichael
Дата сообщения: 04.03.2009 18:21

Код:
...
SET mailer=c:\Program Files\The Bat!\thebat.exe


"%mailer%" "/MAILU=%OutBox%;QUEUE;TO=%ADDR%;S=%subj%;TEXT=%letter%;FILE=%MAttach%"
Автор: Maza_Faka
Дата сообщения: 05.03.2009 06:37
KYMichael

Цитата:
Такой код выдаёт ошибку

А если заключить переменную в кавычки?

Код:
SET "mailer=c:\Program Files\The Bat!\thebat.exe"
Автор: igor_andreev
Дата сообщения: 05.03.2009 06:47
Maza_Faka
Да у него скорей всего, как обычно - enabledelayedexpansion в начале батника...
Автор: xitsa
Дата сообщения: 05.03.2009 07:29
Подскажите, а как сделать так, чтобы можно было указать имя файла в unicode?
т.е. что-то вроед dir /.../греческие буквы/..../папка
Автор: vitrzn
Дата сообщения: 05.03.2009 08:16
Maza_Faka
В самый раз !!!
СПС.
Автор: 01MDM
Дата сообщения: 05.03.2009 09:32
xitsa

Цитата:
Подскажите, а как сделать так, чтобы можно было указать имя файла в unicode?

Для этого необходимо запустить командную оболочку в юникодном режиме `cmd /u`. И шрифт тоже должен содержать эти символы (Lucida Console)
Автор: Kilyan
Дата сообщения: 05.03.2009 10:52
Помогите!
Как сделать проверку %1?
т.е. необходимо проверить использовался ли дополнительный ключ при запуске батника, например "start.bat 1" или "start.bat 2" - если есть то использовать одну процедуру если же нет ключа то другую?
Помогите этот методп впоймать. Меня только хватило на описание всех возможных ключей, а как узнать есть ли он вообще?

Добавлено:
И еще один вопросик!
Как автоматизировать очистку лишних пробелов в тхт-файле вида [more]440800;31.01.2009; 74/440800;МАЛЕ ПРИВАТНЕ ПIДПРИЕМСТВО "ВИБIР";не платник; 50.00; 41.67; 8.33;;;;01.2009;001;;;;;0;1;[/more].
Пробелы встречаются в основном только в суммах .????
Автор: Maza_Faka
Дата сообщения: 05.03.2009 11:03
Kilyan

Код:
@Echo Off

If "%~1"=="" (
Echo Called without param
) Else (
Echo Called with param: %1
)
Автор: rBBWYwg
Дата сообщения: 05.03.2009 12:51
Как вывести список поддиректорий определенной папки в чистом виде (каждая поддиректория в отдельной строке, без другой информации, получаемой при выполнении dir FOLDER >list.txt)?
Автор: Maza_Faka
Дата сообщения: 05.03.2009 13:29
rBBWYwg

Код:
Dir c:\windows /b /s
Автор: Kilyan
Дата сообщения: 05.03.2009 15:45
Maza_Faka
Спасибо-все удачно!
И последний вопрос. Как проверить существование нескольких файлов с разными масками?
Наличие одного файла проверяю if exist <имя файла>
А как проверить сразу три и только в случае наличия всех-что то делать?
Можно ли это сделать компактно?
Автор: rBBWYwg
Дата сообщения: 05.03.2009 16:12
Maza_Faka

Так просто, и так стыдно... Спасибо большое.
Автор: KYMichael
Дата сообщения: 05.03.2009 17:10
Maza_Faka

Код: SET "mailer=c:\Program Files\The Bat!\thebat.exe"
Автор: igor_andreev
Дата сообщения: 05.03.2009 18:06
KYMichael
disabledelayedexpansion сделай перед SET и отправкой почты.
Автор: KYMichael
Дата сообщения: 05.03.2009 19:56
igor_andreev

Цитата:
disabledelayedexpansion сделай перед SET и отправкой почты.

Ур-р-а-а! Заработало!
Спасибо!

P.S. рановато я обрадовался, теперь The Bat вызывается, но он чихать хотел на параметры переданные ему при вызове

Но это уже не сюда Вопрос
(главное с "!" решилось, ещё раз спасибо!)



Автор: BorlandIMHO
Дата сообщения: 05.03.2009 21:20

Цитата:
Как проверить существование нескольких файлов с разными масками?
Наличие одного файла проверяю if exist <имя файла>
А как проверить сразу три и только в случае наличия всех-что то делать?
Можно ли это сделать компактно?


Код: for %%N in (file1.ex1 file2.ex2 file3.ex3) do if not exist %%N exit
REM дальше то, что должно выполняться при наличии всех трёх файлов
Автор: Kilyan
Дата сообщения: 05.03.2009 22:53
BorlandIMHO
Все бы хорошо, но нужно б еще вывести каких файлов не хватает.
неплохо былобы как то с такой конструкцией

Цитата:

If "%~1"=="" (
Echo Called without param
) Else (
Echo Called with param: %1
)

Чтоб можно в двух вариациях что то сделать!
Автор: Maza_Faka
Дата сообщения: 06.03.2009 06:45
Kilyan

Цитата:
неплохо былобы как то с такой конструкцией

Так сделайте! Вам же показали:

Код:
@Echo Off

for %%N in (file1.ex1 file2.ex2 file3.ex3) do (
if not exist %%N (
Echo File: %%N is not exists
) Else (
Echo File: %%N is exists
)
)
Автор: NvvLazyTiger
Дата сообщения: 06.03.2009 07:32
Kilya
Цитата:
Как проверить существование нескольких файлов с разными масками?
Наличие одного файла проверяю if exist <имя файла>
А как проверить сразу три и только в случае наличия всех-что то делать?
Можно ли это сделать компактно?

Цитата:
нужно б еще вывести каких файлов не хватает.

Например можно сделать так:
Код: @echo off
:: NoTot счётчик отсутствующих файлов
set NoTot=0
:: NoFil перечень отсутствующих файлов
set NoFil=

:: перебор элементов заданного перечня
for %%a in ( "f i l e 1 . e x 1" file2.ex2 file3.ex3 ) do call :ChkFile %%a

:: если всё в порядке - делаем то, что нужно
if %NoTot% == 0 goto IfAllOk

:: если чего-то нет - известим о факте
echo ! Missed %NoTot% file(s) [%NoFil% ]
goto :eof

:ChkFile проверка наличия, учёт отсутствия файла
if exist %1 goto :eof
:: если файла нет, запомним имя и увеличим счётчик
set NoFil=%NoFil% %1
set /a NoTot=%NoTot%+1
goto :eof

:IfAllOk действия при наличии всех файлов из списка
Автор: Kilyan
Дата сообщения: 06.03.2009 07:43
NvvLazyTiger
Как раз то что нужно! спасиб.
Автор: vitrzn
Дата сообщения: 06.03.2009 08:28
есть ftp , с него качаю файлы все подряд.
надо делать выборку по датам или по времени изменения и перенаправить самые свежие в текстовый файл, а затем этот текстовый файл передать команде mget

Помогите в написании!
Автор: Maza_Faka
Дата сообщения: 06.03.2009 08:48
vitrzn
Не проще ли воспользоваться wget?
Автор: vitrzn
Дата сообщения: 06.03.2009 08:59
Maza_Faka

Цитата:
Не проще ли воспользоваться wget?


БУМ юзать !
СПС за совет !!!
Автор: Kilyan
Дата сообщения: 06.03.2009 12:41
Помогите найти ошибку!?

Код: SET i_month=""
if "%~1"=="" ( goto :IfAllOk ) else (
(set /A param = "%~1" ) & call :Chkparam %param%
)
:Chkparam проверка параметра
if %1 LSS 10 (Set i_month=0%param) else (set i_month=%1)

:IfAllOk
Echo %i_month%
pause
Автор: NvvLazyTiger
Дата сообщения: 06.03.2009 13:53
Kilyan
Цитата:
Помогите найти ошибку!?

Зачем так сложно? (в тексте минимум одна ошибка - п/п :Chkparam не завершается оператором `goto :eof`)
Проще сделать так:
Код: SET i_month=%1
:: если параметра нет, сразу идём на метку
if NOT defined i_month goto IfAllOk
:: если в параметре один символ - приписываем слева цифру "0"
if %i_month:~1%. == . set i_month=0%1

:IfAllOk
if defined i_month (echo %i_month%) else (echo NO params!)
pause

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


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