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

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

Автор: zayakin
Дата сообщения: 07.06.2007 15:09
в одном файле делаю кучу переименований - не бейте, пока по другому не могу.
ren %mp1%yu1Инстр*.xls yu1Instr.xls
send %mpb%myu1instr.txt %mp1%yu1Instr.xls
ren %mp2%yu2Инстр*.xls yu2Instr.xls
send %mpb%myu2instr.txt %mp2%yu2Instr.xls

вторая строка запускает send.bat со строкой:
blat c:\temp\mail\message.txt -tf %1 -s "Svodka" -p EkonSender -attach %2

проблема такая - отработав первые две строки и отправив сообщение, дальнейшее выполнение прекращается, т.е. третья строка уже не отрабатывается.
Автор: KapralBel
Дата сообщения: 07.06.2007 15:16
zayakin

Код: en %mp1%yu1Инстр*.xls yu1Instr.xls
call send %mpb%myu1instr.txt %mp1%yu1Instr.xls
ren %mp2%yu2Инстр*.xls yu2Instr.xls
call send %mpb%myu2instr.txt %mp2%yu2Instr.xls
Автор: zayakin
Дата сообщения: 07.06.2007 15:19
прошу прощения, решение найдено - при запуске send.bat использую
cmd /C send ... и все работает
Автор: zayakin
Дата сообщения: 08.06.2007 11:20
почему-то Call не давал решения.
подскажите, как получить месяц прописью "Июнь" например. из текущей даты
udate +%B дает название по английски, а надо по-русски
Автор: KapralBel
Дата сообщения: 08.06.2007 11:23
zayakin
А что за
Цитата:
udate +%B
?
Автор: zayakin
Дата сообщения: 08.06.2007 11:40
это из набора UnxUtils как-то предлагалось для внимания на этом сайте.
Автор: Maza Faka
Дата сообщения: 08.06.2007 13:54
zayakin

Цитата:
как получить месяц прописью "Июнь" например. из текущей даты

Какой формат даты используется? Если такой: dd mm yyyy, то стандартными средствами bat, cmd, месяц можно получить так:

Код:
@echo off
setlocal enabledelayedexpansion
set count=0
set month=1%date:~3,2%
set /a month-=100

for %%a in (Январь Февраль Март Апрель Май Июнь Июль ^
Август Сентябрь Октябрь Ноябрь Декабрь) do (
set /a count+=1
if !count! equ %month% echo Текущий месяц %%a)
Автор: zayakin
Дата сообщения: 08.06.2007 14:57
Maza Faka
гуд!
Автор: snetch
Дата сообщения: 11.06.2007 21:31
Допустим у меня есть текст:

Посл. сообщение: korleon
          TV бардак / TV: The Movie (2006) DVDRip
    13     dix    799    9th December 2006 - 4:32
Посл. сообщение: Gua
          Вне игры / Comeback Season (2006) DVDRip
    15     zheka64    1 391    8th December 2006 - 17:18
Посл. сообщение: Cka3
          Страх и трепет / Fear and Trembling (2003) DVDRip
    16     Septic_Flesh    863    7th December 2006 - 13:05

Мне нужно чтобы к примеру в отдельный txtихи в этом же поудалялись все лишние строки (время, имена тех кто постил и т.д.).Т.е. просто чтобы остались нижеуказанные строки. И, сели это возможно, поменять рус. и англ местами, рус. текст взять в скобки (Fear and Trembling (Страх и трепет)).
Спасибо за помощ!
Автор: newden
Дата сообщения: 11.06.2007 21:52
Сорь за тупой вопрос.

Как заставить баттник запускать программу и сразу закрываться, а не ждать завершения этой программы?
Автор: Elroir
Дата сообщения: 11.06.2007 21:56
newden

Код: start program.exe
Автор: mistik26
Дата сообщения: 11.06.2007 23:57
Доброе время ,необходима помощь в написании батника который мог бы запустить копирование файлов на удаленный файлсервер который требует ауторизации при подключении.
Автор: Elroir
Дата сообщения: 12.06.2007 00:26
mistik26
Ты напиши, как ты это делаешь вручную, а мы подумаем, как это автоматизировать
Автор: Maza Faka
Дата сообщения: 12.06.2007 07:18
Elroir

Цитата:
@echo off
setlocal enabledelayedexpansion
chcp 1251>nul
set "text=movies.txt"
set "file=movies_names.txt"
set "process=false"
for /f "usebackq tokens=1,2 delims=/(" %%a in ("%text%") do (
if !process!==true (
set "movie="
call :show %%b^^^(%%a^^^)
set "process=false"
)
if "%%~na"=="Посл" set "process=true"
)
goto :eof
:show
if "%1"=="" (echo %movie%>>"%file%") else (
set "movie=%movie% %1"
shift
goto show
)


Красиво! Но можно попроще:

Код:
@Echo off
chcp 1251>nul
for /f "tokens=*" %%a in ('type movies.txt ^| find "/"') do for /f "delims=/( tokens=1,2" %%b in ("%%a") do echo %%c (%%b)>> list.txt
Автор: Elroir
Дата сообщения: 12.06.2007 10:10
Maza Faka

Цитата:
Но можно попроще

Действительно. Чего-то я не додумал
Автор: prankster
Дата сообщения: 12.06.2007 12:00
помогите написать пакетный файл, с помощью которого можно бы было настроить сетевое подключение наподобие этого:

netsh interface ip set address name="LAN" source=static addr=192.168.10.158 mask=255.255.254.0
netsh interface ip set address name="LAN" gateway=192.168.10.1 gwmetric=0
netsh interface ip set dns name="LAN" source=static addr=1.2.3.1 register=PRIMARY
netsh interface ip set wins name="LAN" source=static addr=none

но чтобы можно было вводить ip адрес и основной шлюз с клавиатуры
Автор: Maza Faka
Дата сообщения: 12.06.2007 13:38
prankster

Код:
@Echo off
:begin
set /p "IP=Enter your IP-address "
set /p "gateway=Enter your gateway"
if not defined IP goto begin
if not defined gateway goto begin

netsh interface ip set address name="LAN" source=static addr=%IP% mask=255.255.254.0
netsh interface ip set address name="LAN" gateway=%gateway% gwmetric=0
netsh interface ip set dns name="LAN" source=static addr=1.2.3.1 register=PRIMARY
netsh interface ip set wins name="LAN" source=static addr=none
Автор: mistik26
Дата сообщения: 12.06.2007 23:27
Elroir Самое примитивное ето то как делают секретарши по протоколу http,
в броузере . http://192.168.0.254, после етого выскакивает окно с просбой ввести юзверь и пароль ,если авторизация успешная открываеться окно сетевого диска.
Автор: Elroir
Дата сообщения: 13.06.2007 02:07
mistik26
Насколько я понимаю, существует некий список файлов, которые надо переписать.
Можно воспользоваться утилитами wget или curl для передачи файлов. Я не помню точно синтаксис этих утилит - либо посмотри справку по ним, либо спроси здесь, на форуме, в соответствующих топиках в Программах.
Если список находится в файле list.txt, тогда (видимо) будет работать такой код:

Код:
@echo off
for /f %%a in (list.txt) do (
curl -T -u username:password "%%a" http://192.168.0.254/Folder
)
Автор: moonkir
Дата сообщения: 13.06.2007 14:12

Код: @ECHO OFF

:Extract
echo.
echo -=Распаковка обновлений=-
echo.
cd msu
For %%F In ("*.msu") Do Call :Ext %%F
goto Exit
:Ext
echo Распаковывается обновление %1 ...
call ..\tools\servicing\expand -F:* "%1" "..\Cab" > nul
::Удаление лишних файлов
del /f /q "..\Cab\*.xml" > nul
del /f /q "..\Cab\*.txt" > nul
del /f /q "..\Cab\WSUSSCAN.cab" > nul
GoTo :EOF

:Exit
exit
Автор: Maza Faka
Дата сообщения: 13.06.2007 15:58
moonkir

Цитата:
спрашивать заменить/пропустить/заменить все

Например имеется папка с распакованными обновлениями d:\update, распаковываешь .cab-архив во временную папку, а потом копируешь в папку d:\update с запросом подтверждения на перезапись существующего файла.

Код:
md %temp%\tmp_dir
expand test.cab -f:*.* %temp%\tmp_dir
copy /-y %temp%\tmp_dir d:\update
rd /s /q %temp%\tmp_dir
Автор: moonkir
Дата сообщения: 13.06.2007 16:29
Maza Faka
А без распаковки никак ?
Автор: Elroir
Дата сообщения: 13.06.2007 17:21
moonkir
Я не знаком с форматом .msu, поэтому вопрос - там внутри обязательно есть одноименный .cab файл? Он там единственный .cab?
Автор: Maza Faka
Дата сообщения: 13.06.2007 17:26
moonkir

Цитата:
А без распаковки никак ?

Можно и без распаковки:

Код:
@Echo off
set output=d:\update
setlocal enabledelayedexpansion
for %%c in (*.cab) do (
for /f "skip=2 tokens=2 delims=: " %%a in ('expand -d "%%c"') do (
if exist %output%\%%a (
set /p choose=%%a is exist! Overwrite[o], skip[s], overwrite all[a]) else (
expand %%c -f:%%a %output%)

if /i !choose!==o expand %%c -f:%%a %output% & set choose=
if /i !choose!==a call :all "%%c" & goto :eof
)
)

goto :eof

:all
expand %1 -f:*.* %output%
Автор: moonkir
Дата сообщения: 13.06.2007 17:31
Elroir Всегда есть одноименный .cab
WSUSSCAN.cab
.txt (описание каба)
.xml (сценарий установки, как я понял)

Они все удаляются так как не нужны мне.

Код: ::Удаление лишних файлов
del /f /q "..\Cab\*.xml" > nul
del /f /q "..\Cab\*.txt" > nul
del /f /q "..\Cab\WSUSSCAN.cab" > nul
Автор: Maza Faka
Дата сообщения: 13.06.2007 18:02
moonkir

Цитата:
Может я не так задал суть вопроса, но там распаковываються msu, а не cab

Никогда не сталкивался с "msu"-файлами, поэтому не знаю, как можно просмотреть их содержимое не распаковывая их, если знаешь, как, то подскажи.
Автор: Elroir
Дата сообщения: 13.06.2007 18:04
moonkir

Код:
@ECHO OFF
setlocal enabledelayedexpansion
:Extract
echo.
echo -=Распаковка обновлений=-
echo.
cd msu
For %%F In ("*.msu") Do Call :Ext %%F
goto Exit
:Ext
echo Распаковывается обновление %1 ...
if defined updall goto continue
if exist "..\Cab\%~n1.cab" (
echo Update already exists in target directory
set /p choice=Overwrite(o),Skip(s),Owerwrite All(a)?
if "!choice:~0,1!"=="o" goto continue
if "!choice:~0,1!"=="a" (set "updall=true" & goto continue)
goto :EOF
)
:continue
call ..\tools\servicing\expand -F:* "%1" "..\Cab" > nul
::Удаление лишних файлов
del /f /q "..\Cab\*.xml" > nul
del /f /q "..\Cab\*.txt" > nul
del /f /q "..\Cab\WSUSSCAN.cab" > nul
GoTo :EOF

:Exit
exit
Автор: moonkir
Дата сообщения: 13.06.2007 18:15

Код: EXPAND [-r] <источник> <результат>
EXPAND -r <источник> [<результат>]
EXPAND -D <источник>.CAB [-F:<файлы>]
EXPAND <источник>.CAB -F:<файлы> <результат>

-r Переименование распакованных файлов.
-D Отображение всех файлов источника.
<источник> Имя и путь к исходному файлу. Допускаются подстановочные знаки.
-F:<файлы> Имена файлов для извлечения из .CAB файла архива.
<результат> Имя и путь к конечному файлу.
В качестве результата можно указать каталог.
Если <источник> описывает несколько файлов и не задан параметр -
r,
то <результат> должен быть каталогом.
Автор: Elroir
Дата сообщения: 13.06.2007 19:00
moonkir
Пробуй вот так:

Код:
@ECHO OFF
setlocal enabledelayedexpansion
:Extract
echo.
echo -=Распаковка обновлений=-
echo.
cd msu
For %%F In ("*.msu") Do Call :Ext %%F
goto Exit
:Ext
echo Распаковывается обновление %1 ...
if defined updall goto continue
if exist "..\Cab\%~n1.cab" (
echo Update already exists in target directory
set /p choice=Overwrite^(o^),Skip^(s^),Owerwrite All^(a^)?
if "!choice:~0,1!"=="o" goto continue
if "!choice:~0,1!"=="a" (set "updall=true" & goto continue)
goto :EOF
)
:continue
call ..\tools\servicing\expand -F:* "%1" "..\Cab" > nul
::Удаление лишних файлов
del /f /q "..\Cab\*.xml" > nul
del /f /q "..\Cab\*.txt" > nul
del /f /q "..\Cab\WSUSSCAN.cab" > nul
GoTo :EOF

:Exit
Автор: moonkir
Дата сообщения: 13.06.2007 20:04
ElroirВсе работает, спасибище. Если можно раскажите что к чему ...
не понял вот это:

Код: if defined updall goto continue
if exist "..\Cab\%~n1.cab"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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