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

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

Автор: pand
Дата сообщения: 25.12.2008 02:08
Банальный вопрос - запуск из бата несколько экзешников одновременно. (просьба не начинать пинать заранее, прочитайте полностью) Система - Виста 64СП1.
Все 3 пути с пробелами. Пробовал конструкцию типа
start ""
start ""
start ""
Не работает, пробовал
""&""&""
Не работает
Так как же их запустить элегантно? Полагаю что если сделать отдельно 3 батника в непробельной зоне все заработает, но некрасиво это.
Автор: Elroir
Дата сообщения: 25.12.2008 03:30
pand

Код:
start "" "first program with spaces in the name.exe"
start "" "second program with spaces in the name.exe"
start "" "third program with spaces in the name.exe"
Автор: macxxxxx
Дата сообщения: 25.12.2008 09:04
king_stiven

Цитата:
Утилита nircmdc.exe делает

nircmdc.exe sendkey enter down
nircmdc.exe sendkey enter up


я не совсем понял что с ним делать, пожешь раказать как это сделать?

из бат запускается програма и в этой проге надо нажать ф2 и после ентр, потом батник продолжает работу (копирует, удаляет и тд)
что-то типа этого-

xcopy "c:\....." "c:\...."
cd "c:\...\...\1.exe"
1.exe
:и здесь уже надо нажать ф2 и ентр
xcopy ......
ren .....
exit
Автор: vovikgr
Дата сообщения: 25.12.2008 10:41
добрый день такой вопрос, как сменить дату создания файла.
Есть файл у которого надо менять дату создания на текущее время.
то есть после запуска батника чтоб дата создания файла была временем запуска батника.
Автор: Elroir
Дата сообщения: 25.12.2008 11:07
vovikgr
Утилита nircmd умеет менять время создания и модификации файла.

Код:
nircmd.exe setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"
Автор: RomanF
Дата сообщения: 25.12.2008 18:59
Может ещё кто подскажет.

Вот подкинули мне вариант как можно вытащить IP адрес нужного мне шлюза

Цитата:
@echo off
setlocal

for /f "tokens=3" %%i in ('
netsh diag show gateway ^| findstr "DefaultIPGateway"
') do (
echo %%i | findstr "\<10\." 1>nul && set dg=%%i
)
echo %dg%

В случае, если подсеть шлюза может быть разная (10.131.*, 10.151.* предложили следующий вариант

Цитата:
echo %%i | findstr "\<10\.1[35]1" 1>nul && set dg=%%i

Собственно вопрос:
как будет выглядеть регулярное выражение (см. предыдущая цитата), если подсеть будет 10.205.*, 10.189.*
Автор: igor_andreev
Дата сообщения: 25.12.2008 20:18
RomanF
10\.[0-9][0-9][0-9]
Автор: RomanF
Дата сообщения: 25.12.2008 22:16
igor_andreev, вот как раз этого я не могу допустить, т.к. возможны попадания других шлюзов (ip адресов). Необходимо выбрать только нужный мне IP адрес из возможных подсетей. Например из 10.205.*, 10.189.* или 10.122.*
Автор: igor_andreev
Дата сообщения: 25.12.2008 22:45
RomanF
А 10.131.*, 10.151.* уже не нужно?
У findstr поддержка рег. выражений не ахти, возьми sed
типа такого sed -r -n "/10\.(205|189|122)/p"
Автор: gbcfkf
Дата сообщения: 26.12.2008 08:12
Товарищи!

Как выудить из Win XP Pro ключ ОС?

Автор: real_LEM
Дата сообщения: 26.12.2008 08:24
gbcfkf

Цитата:
Как выудить из Win XP Pro ключ ОС?

ProduKey
Автор: gbcfkf
Дата сообщения: 26.12.2008 08:30
real_LEM
Спасибо, похоже то, что нужно.. даже на удаленной машине посмотреть ключ можно
Автор: RomanF
Дата сообщения: 26.12.2008 08:57
igor_andreev
это unix'овая утилита, BAT - это windows.
Впорос актуален.
Автор: igor_andreev
Дата сообщения: 26.12.2008 10:14
RomanF

Цитата:
это unix'овая утилита

бздыщщ

Цитата:
BAT - это windows.

BAT - это мастдайки(95\98\Me), windows - это CMD

Автор: 01MDM
Дата сообщения: 26.12.2008 10:16
RomanF
если не хочешь иcпользовать sed.exe, то используй три строки

Код:
echo %%i | findstr "\<10\.205" 1>nul && set dg=%%i
echo %%i | findstr "\<10\.189" 1>nul && set dg=%%i
echo %%i | findstr "\<10\.122" 1>nul && set dg=%%i
Автор: macxxxxx
Дата сообщения: 26.12.2008 11:07
не подскажите как сделать так:
если в папке есть файл 01.txt то переименовать его в abc.txt, а если в папке есть 02.txt и 03.txt то 03.txt переместить в другую папку а 02.txt переименовать в cde.txt
Автор: PuzzleW
Дата сообщения: 26.12.2008 11:15
if exsist 01.txt ren 01.txt abc.txt
if exsist 02.txt ren 02.txt cde.txt
if exsist 03.txt move 03.txt another_folder\03.txt

только ты определись твое 02.txt и 03.txt - это "И" или это "ИЛИ"
Автор: macxxxxx
Дата сообщения: 26.12.2008 11:29
PuzzleW
именно "И"
спасибо ))

Добавлено:
PuzzleW
чёто не прокатывает, ему нужен именно 01.txt, мне нужно типа если есть 03.txt то значение правильно, а есль нет то ложно, что то типа токо
Автор: AlexLev59
Дата сообщения: 26.12.2008 12:35
ВОПРОС:
Можно ли программно вычислить, время выполнения командного файла?
Спасибо.
Автор: Elroir
Дата сообщения: 26.12.2008 14:00
AlexLev59

Цитата:
Можно ли программно вычислить, время выполнения командного файла?

Можно, но код громоздкий получается:

Код:
@echo off
setlocal
for /f "tokens=1-4 delims=:," %%a in ('echo %time%') do call :setTime start %%a %%b %%c %%d
:: ЗДЕСЬ ТВОЙ КОД
:: Вместо строчки ping-a
:: можно написать "call yourBatchFile.cmd"

ping -n 63 127.0.0.1>nul

:: КОНЕЦ ТВОЕГО КОДА
for /f "tokens=1-4 delims=:," %%a in ('echo %time%') do call :setTime finish %%a %%b %%c %%d
call :showTime
goto :EOF
:setTime
set "%1Time=%2:%3:%4,%5"
set "t=%5"
set "s=%4"
set "m=%3"
set "h=%2"

if "%t:~0,1%"=="0" set "t=%t:~1%"
if "%s:~0,1%"=="0" set "s=%s:~1%"
if "%m:~0,1%"=="0" set "m=%m:~1%"
if "%h:~0,1%"=="0" set "h=%h:~1%"

set "tt=%t%"
set /a "ss=s * 100"
set /a "mm=m * 6000"
set /a "hh=h * 360000"
set /a "%1=hh+mm+ss+tt"

goto :EOF
:showTime
set /a "dif=%finish%-%start%"
set /a "difHH=dif / 360000"
set /a "difRem=dif %% 360000"
set /a "difMM=difRem / 6000"
set /a "difRem=difRem %% 6000"
set /a "difSS=difRem / 100"
set /a difTT=difRem %% 100"
set "difference=%difHH%:%difMM%:%difSS%,%difTT%"
echo start = %StartTime%
echo finish = %FinishTime%
echo Time taken : %difference%
Автор: AlexLev59
Дата сообщения: 26.12.2008 14:58
Спасибо большое!
Опробовал - выдается сообщение об ошибке в синтаксисе. Но, как я понимаю - в этом примере еще не правильно установлены переходы на goto :EOF?
Автор: Elroir
Дата сообщения: 26.12.2008 15:56
AlexLev59

Цитата:
Но, как я понимаю - в этом примере еще не правильно установлены переходы на goto :EOF?

Все установлено правильно. Я только что скопировал код со страницы в новый батник. Запустил - все работает. Система WinXP SP3 English.
Автор: gbcfkf
Дата сообщения: 27.12.2008 02:23
Приветствую

Такой вопрос:

Копирую батником файл, например вот так:
copy \\Comp1\c$\folder1\file1.txt \\Comp2\c$\temp\
И необходимо в случае успешного копирования выполнять некое условие.
Как в if определить успешно ли скопирован файл (причем файл в папке назначения уже был, он просто замещается на более новый)?

Автор: Nagual
Дата сообщения: 27.12.2008 20:36
gbcfkf

Цитата:
он просто замещается на более новый

при такой записи, если файл существует, то выдается запрос на его перезапись
однако, если поставить ключ /y, то запроса выдаваться не будет
если нужна именно перезапись, то можно попробовать использовать утилиту replace/?

если в следующей строке поставить @echo %errorlevel%, то мы увидим код возврата команды из предыдущей строки
как правило, если мы видим 0, то команда выполнилась без ошибок
более подробно о кодах возврата надо смотреть на сайте разработчиков или в справке

т.о., если после команды написать строку примерно так:
if %errorlevel%==0 @echo succesfully
мы получаем обработку кодов возврата нашей команды оператом if (если)
Автор: johnmar
Дата сообщения: 28.12.2008 11:10
Как последний символ строки из STDIN, выводимой программой cmd1.exe записать в переменную %var1%?
Автор: igor_andreev
Дата сообщения: 28.12.2008 12:32
johnmar

Код:
for /f "tokens=*" %%a in ('cmd1.exe') do set "line=%%a"
set "var1=%line:~-1,1%"
Автор: CKA3O4H1K
Дата сообщения: 29.12.2008 00:15
К сожалению для меня задача оказалась непосильной, прошу помощи

Данное решение окажется полезным для всех кто хоть иногда фотографирует в RAWе. Задача следующая:

Фотоаппарат сохраняет два файла: RAW и JPG
После копирования всех фотографий и последующем просмотре, естественно, возникает желание часть фотографий удалить. В большинстве случаев просматриваются JPGи, они же и удаляются. После них остаются огромные RAWы, которые тоже нужно удалить. Вручную это делать очень не удобно, приходиться смотреть какие JPG остались, вспоминать...

Очень хотел бы иметь скрипт, который сканировал бы текущую папку на RAWы, и искал соответствующий ему по имени JPG. Если JPG не существует - удалять текущий RAW.

Сложна ли задача?
Автор: igor_andreev
Дата сообщения: 29.12.2008 00:22
CKA3O4H1K

Код:
for %%a in (*.raw) do if not exist %%~na.jpg del %%a
Автор: ruslanx3m
Дата сообщения: 29.12.2008 00:47
Privet vsem , kak mne pomeneati "mac address" iz cmd ili .bat-nika o4eni nujno !!!
Автор: CKA3O4H1K
Дата сообщения: 29.12.2008 01:00
igor_andreev
браво! огромнейшее спасибо

ruslanx3m
если не прочитаете правила форума и не научитесь правильно задавать вопросы - вас забанят в самое ближайшее время

по вашему вопросу - поищите утилиты, которые выполняют вашу задачу и умеют работать с командной строкой

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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