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

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

Автор: rutamsystem
Дата сообщения: 25.01.2010 10:54
vitrzn
bomzzz
Спасибо,
Перечитал много страниц форума и вот что собрал (спасибо автору)

===============================
@echo off
setlocal
set "ds=Documents and Settings"
set "tf=Local Settings\Temp"
set "ca=Local Settings\Application Data\1C\1Cv81"
set "cb=Application Data\1C\1Cv81"
for %%i in (c) do (
if not %~d0==%%i: call:clean %%i
)
goto:eof
:clean
if exist %1:\Windows\Temp (
pushd %1:\Windows\Temp
call:delete
popd
)
if exist %1:\WinNT\Temp (
pushd %1:\WinNT\Temp
call:delete
popd
)
if not exist "%1:\%ds%" goto:eof
for /f "tokens=*" %%i in ('dir /b /ad "%1:\%ds%"') do (
if exist "%1:\%ds%\%%i\%tf%" (
pushd "%1:\%ds%\%%i\%tf%"
call:delete
popd
)
if exist "%1:\%ds%\%%i\%ca%" (
pushd "%1:\%ds%\%%i\%ca%"
call:delete
popd
)
if exist "%1:\%ds%\%%i\%cb%" (
pushd "%1:\%ds%\%%i\%cb%"
call:delete
popd
)
)
goto:eof
elete
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
===========================

НУЖНО
чтобы в каталоге set "cb=Application Data\1C\1Cv81"
1. Были удалены все любые создаваемые папки.
2. Удалены любые файлы, но! за исключением файлов с расширением *.xls , *.doc , *.txt - они должны остаться (пока они не будут находиться в удаляемых папках).

Пробовал поменять строку в батнике:
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
на предложенную
for /f "tokens=*" %%i in ('dir ^| findstr "doc$ xls$ txt$"') do echo %%i
чего то не работает, может что не так делаю?

Помогите пожалуйста. Что конкретно и куда и чем заменить?
Спасибо всем кто помогает!
Автор: TNR
Дата сообщения: 25.01.2010 10:58
Подскажите как с командной строки найти определённые запускной файл и занести его местоположения в реестр ?
Автор: bomzzz
Дата сообщения: 25.01.2010 11:03
хорошо бы поконкретнее
TNR

@ECHO OFF
COLOR 9F
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R "C:\" %%I IN (.) DO (
SET MYPath=%%I
SET MYPath=!MYPath:~0,-1!
IF EXIST "!MYPath!MyFile.txt" (
REG ADD "HKCU\Software\MyKey" /V MyValue /t REG_SZ /d "!MYPath!MyFile.txt" /F
GOTO END
)
)
:END
ENDLOCAL
PAUSE
Автор: TNR
Дата сообщения: 25.01.2010 13:07
bomzzz
Мне необходимо найти файлик cons.exe на разделах и занести в реестр путь где он лежит...

Добавлено:
bomzzz
По сути вот это почти решает мою задачу,

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R "G:" %%I IN (.) DO (
SET MYPath=%%I
SET MYPath=!MYPath:~0,-1!
IF EXIST "%%I\cons.exe" (
REG ADD "HKCU\Software\MyKey" /V MyWrk /t REG_SZ /d "%%I" /F
GOTO END
)
)
:END
ENDLOCAL
PAUSE

но только в реестр по мимо пути ставиться ещё какая то точка... как её убрать ?
И можно ли сделать проверку не только одного диска, а несколько ?
Автор: bomzzz
Дата сообщения: 25.01.2010 16:22
REG ADD "HKCU\Software\MyKey" /V MyValue /t REG_SZ /d "!MYPath!MyFile.txt" /F
REG ADD "HKCU\Software\MyKey" /V MyWrk /t REG_SZ /d "%%I" /F

вот так, в оригинале написано "!MYPath!", а у тебя "%%I"
IF EXIST "%%I\cons.exe" - и вот тут тоже

SET MYPath=!MYPath:~0,-1! вот эта строка выкидывает точку, она взялась отсюда
FOR /R "G:" %%I IN (.) DO ( , на фига так сделали не знаю
можно сделать и несколько, повтори для каждого диска. или можно цикл замутить еще один

for /f %%i in ('fsutil fsinfo drives ^|more') do (
echo %%i
)


Цитата:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R "G:\" %%I IN (.) DO (
SET MYPath=%%I
SET MYPath=!MYPath:~0,-1!
REM ECHO !MYPath! можно вставить чтоб не скучно ждать было
IF EXIST "!MYPath!cons.exe" (
REG ADD "HKCU\Software\MyKey" /V MyWrk /t REG_SZ /d "!MYPath!" /F
GOTO END
)
)
:END

FOR /R "D:\" %%I IN (.) DO (
...............................................................


ENDLOCAL


"G:\" косая черта обязательно - офигенно быстро ищет, вбс срипт гораздо дольше вошкается
НЕКОРРЕКТНО РАБОТАЕТ ПОЧЕМУ ТО. ОШИБКА ГДЕ ТО
НАШЕЛ В ЧЕМ ОШИБКА - НЕ ИЩЕТ ТАМ ГДЕ В ПУТИ ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК

Добавлено:
ВОТ ПЕРЕДЕЛАЛ. НО ЗАРАЗА ВСЕ РАВНО НЕ ИЩЕТ В ИМЕНАХ С !
@ECHO OFF
COLOR 9F
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R "c:\" %%I IN (.) DO IF EXIST %%~fI\MYFILE.TXT ECHO %%~fI\MYFILE.TXT & GOTO END
:END
ENDLOCAL
PAUSE

ECHO %%~fI\MYFILE.TXT - ВМЕСТО ВОТ ЕТОГО ЗАПИСЬ В РЕЕСТР НАПИШИ

А ВОТ ТАК ИЩЕТ
@ECHO OFF
COLOR 9F
FOR /R "c:\" %%I IN (.) DO IF EXIST %%~fI\MYFILE.TXT ECHO %%~fI\MYFILE.TXT & GOTO END
:END
PAUSE

ВСЕ ПЕРЕПРОБОВАЛ - ЛЮБЫЕ ЗНАКИ МОЖНО И АТРИБУТЫ ПАПОК. ТОЛЬКО В КОРЗИНЕ НЕ ИЩЕТ ПОЧЕМУ ТА
Автор: TNR
Дата сообщения: 26.01.2010 06:14
bomzzz
Спасибо большое ! Немного подправил твой вариант и всё замечательно работает )))

Добавлено:
bomzzz
А как ещё сделать проверку на наличие записи в реестре ? Если запись есть, то запустить например блокнот, если нет запустить поиск т.е. то что описано выше .
Автор: bomzzz
Дата сообщения: 26.01.2010 14:50
вот себе делал батник для очистки системы

REM ****DOWNLOAD MASTER*****
REG QUERY "HKCU\Software\2VG\Download Master" /v InstallPath
IF ERRORLEVEL 1 GOTO NEXTDM

NOTEPAD.EXE
GOTO FINISH

:NEXTDM

FOR /R "c:\" %%I IN (.) DO IF EXIST %%~fI\MYFILE.TXT ECHO %%~fI\MYFILE.TXT & GOTO FINISH

:FINISH

если ключа не существует (конкретно в этом примере проверяется наличие параметра - пути инсталяции) - а значит предположительно и установленной программы переход на метку
Автор: TNR
Дата сообщения: 26.01.2010 16:37
bomzzz
Да ! То что нужно ... ещё раз спасибо !
Автор: bomzzz
Дата сообщения: 26.01.2010 17:26
Автор: Greylynx
Дата сообщения: 27.01.2010 19:47
Друзья, есть такая задача: в батнике выполняются несколько команд, после чего мне нужно запустить приложение 111.ехе, сделать паузу 20 секунд(чтобы оно запустилось) - это я с помощью пинга сделаю, после чего закрыть приложение(tskill). Проблема следующая - после запуска 111.ехе батник дальше не отрабатывает команды до тех пор, пока вручную не закрою 111.ехе. Может подскажет кто как реализовать?
Автор: bomzzz
Дата сообщения: 27.01.2010 19:53
111.exe запусти командой start, а процесс прибей по часам %TIME% когда 20 секунд пройдет

а можно так запустить второй батник а потом 111, а второй батник отсчитает время и прибьет процесс, управление автоматом вернеться в первый батник
Автор: Greylynx
Дата сообщения: 27.01.2010 20:08
Ага! Я-то думаю call не катит... Как-же тогда? Спасибо огромное! Мне как-то проще
ping -n 20 127.0.0.1 > nul
А по часам как?
Автор: bomzzz
Дата сообщения: 27.01.2010 20:09
ну как как - время получаешь и IF проверяешь когда 20 секунд пройдет.

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

Добавлено:
@ECHO OFF
COLOR 9F
SET MYTIME=%TIME:~6,-3%
SET /a FINISH=%MYTIME%+20
START 111.EXE
:MYNEXT
IF NOT %FINISH% GEQ %TIME:~6,-3% GOTO MYOUT
PING -N 1 127.0.0.1> NUL
GOTO MYNEXT
:MYOUT
TASKKILL /f /im 111.EXE
pause


ЧЕТА Я УЖЕ МЫСЛЬ ПОТЕРЯЛ НУ ТАК ПРИМЕРНА
@ECHO OFF
COLOR 9F
ECHO PING -N 20 127.0.0.1^> NUL>MY.BAT
ECHO TASKKILL /F /IM 111.EXE>>MY.BAT
START 111.EXE
CALL MY.BAT
DEL MY.BAT /Q
pause

чета меня понесло и так будет работать как надо
start 111.exe
ping -n 20 127.0.0.1> nul
killtask /f /im 111.exe
Автор: Cokolok
Дата сообщения: 27.01.2010 22:12
Есть рыбатенка, вот у миня файл hl находиться по такому пути D:\games\Counter-Strike 1.6\hl.exe , как зделать при запуске этого файла параметры запуска ему в батнике -nomaster -game cstrike ?, жду ответа
Автор: bomzzz
Дата сообщения: 27.01.2010 22:16
обратись в агентство по трудоутстройству. http://www.job.ru/
Автор: SuperBabay
Дата сообщения: 27.01.2010 22:18

Цитата:
Есть рыбатенка, вот у миня файл hl находиться по такому пути D:\games\Counter-Strike 1.6\hl.exe , как зделать при запуске этого файла параметры запуска ему в батнике -nomaster -game cstrike ?, жду ответа

Батник? зачем. создать ярлык. Свойства.Добавить нужные параметры.
Автор: Cokolok
Дата сообщения: 27.01.2010 22:41
ППц, я уже разобрался,
тут созрел другой вапрос, кокой камандой зделать чтобы файл копирнулся на рабочий стол ? , только неговари что командой copy, так как там путь длинный, мнебы чтото полегче, и у каждый разный логин в виндовсе, плиз помогите.
Автор: bomzzz
Дата сообщения: 27.01.2010 22:49
chcp 1251
copy "c:\my\very\long\path\with\tabs\myfile" "%userprofile%\рабочий стол\myfile"

если путь больше 8 вложеных папок надо сохранить путь в переменную
типа так
set mypath=c:\my\very\long\path\with\tabs
copy "%mypath%\and\curilic\symbols\myfile" "%userprofile%\рабочий стол\myfile"



type "c:\my\very\long\path\with\tabs\myfile"> "%userprofile%\рабочий стол\myfile"
move "c:\my\very\long\path\with\tabs\myfile" "%userprofile%\рабочий стол\myfile"
Автор: Cokolok
Дата сообщения: 27.01.2010 22:55
а русский язык батник прочитает ?, както по энглишу плиз можно ? просто реально 1 способ нормальный, но слово РАБОЧИЙ СТОЛ, оч нехорошое, есть чтото попроще ?
Автор: bomzzz
Дата сообщения: 27.01.2010 22:58
chcp 1251
если добавить эту команду скушает, или можно использовать короткие пути, или конвертировать кирилицу в кодировку дос

Добавлено:
C:\docume~1\user\0016~1 - вот так рабочий стол
если юзер конечно по английски и короче 8 символов
Автор: Cokolok
Дата сообщения: 28.01.2010 14:12
1 как зделать чтобы батник сам скрывался (кудато)
2 как зделать чтобы при запуске какойто программы в моём случае например калькулятор, чтобы при запуске он сворачивался в фоновым.? спс за помощ.
Автор: bomzzz
Дата сообщения: 28.01.2010 17:23
Cokolok
батники этого не умеют - управлять окнами. надо использовать сторонние утилиты или вбс скрипты.
http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1200 вот я делал такую. еще используют какую универсальную не могу вспомнить название и в шапке темы есть cmdow.
Автор: bredonosec
Дата сообщения: 28.01.2010 17:33
не совсем понятная трабла.
не находит соединения и всё тут.. почему - не понимаю.
[more]
@echo ON

set DomainUserUPN=domain\admin
set /P DomainUserPassword=password...
set FLOG=%~n0.log
set FLIST=SK-AD.txt
if exist %FLOG% set FLIST=%FLOG%
for /f "tokens=*" %%i in (%FLIST%) do call :COPY_URL1 %%i
goto RETURN

:COPY_URL1
set PK=%1\c$
net use %1 /d
net use %PK% /d
pause
net use %PK% %DomainUserPassword% /user:%DomainUserUPN% || goto NO_CONN
pause
set PK_DIR=%PK%\Documents and Settings\All Users
dir "%PK_DIR%" >text1.log || goto RETURN
pause
if not exist "%PK_DIR%\desktop\testlink.url" copy /b "c:\[...]\Desktop\testlink.url" "%PK_DIR%\desktop\*.*"
PAUSE
goto RETURN

:NO_CONN
echo %1 >%FLOG%
pause

:return
[/more]Взял, пауз понапихал в файл - получаю
[more]
c:\..\My Documents\Sys>set DomainUserUPN=domain\ADMIN
04

c:\..\My Documents\Sys>set /P DomainUserPassword=password...
password...[password]

c:\..\My Documents\Sys>set FLOG=Pastefile_sar.log

c:\..\My Documents\Sys>set FLIST=SK-AD.txt

c:\..\My Documents\Sys>if exist Pastefile_sar.log set FLIST=Pastefile_sar.log

c:\..\My Documents\Sys>for /F "tokens=*" %i in (Pastefile_sar.log) do call :COPY_URL1 %i

c:\..\My Documents\Sys>call :COPY_URL1 S04_PEPR

c:\..\My Documents\Sys>set PK=DD_PEPR\c$

c:\..\My Documents\Sys>net use DD_PEPR /d
The network connection could not be found.

More help is available by typing NET HELPMSG 2250.


c:\..\My Documents\Sys>net use DD_PEPR\c$ /d
The network connection could not be found.

More help is available by typing NET HELPMSG 2250.


c:\..\My Documents\Sys>pause
Press any key to continue . . .[/more]
То есть, не соединяет и всё тут. Попробовал в комстроке - net use m: dd_pepr [pass] /user:[domain\user] - не дает тож, соединяет только если
net use m: \\dd_pepr [pass] /user:[domain\user]
- переделал файл в
[more]
@echo ON

set DomainUserUPN=domain\admin
set /P DomainUserPassword=password...
set FLOG=%~n0.log
set FLIST=SK-AD.txt
if exist %FLOG% set FLIST=%FLOG%
for /f "tokens=*" %%i in (%FLIST%) do call :COPY_URL1 %%i
goto RETURN

:COPY_URL1
set PK=%1\c$
net use \\%1 /d
net use \\%PK% /d
pause
net use m: \\%PK% %DomainUserPassword% /user:%DomainUserUPN% || goto NO_CONN
pause
set PK_DIR=m:\Documents and Settings\All Users
dir "%PK_DIR%" >text1.log || goto RETURN
pause
if not exist "%PK_DIR%\desktop\testlink.url" copy /b "c:\[..]\Desktop\testlink.url" "%PK_DIR%\desktop\*.*"
PAUSE
goto RETURN

:NO_CONN
echo %1 >%FLOG%
pause

:return[/more]
вроде один раз получалось, но повторные проверки нифига не дали - не пишется, и точно так же не находит ((
[more]
c:\[..]\My Documents\Sys>set DomainUserUPN=domain\admin
04

c:\[..]\My Documents\Sys>set /P DomainUserPassword=password...
password...[pass]

c:\[..]\My Documents\Sys>set FLOG=Pastefile_sar1.log

c:\[..]\My Documents\Sys>set FLIST=SK-AD.txt

c:\[..]\My Documents\Sys>if exist Pastefile_sar1.log set FLIST=Pastefile_sar1.log

c:\[..]\My Documents\Sys>for /F "tokens=*" %i in (Pastefile_sar1.log) do call :COPY_URL1 %i

c:\[..]\My Documents\Sys>call :COPY_URL1 DD_PEPR

c:\[..]\My Documents\Sys>set PK=DD_PEPR\c$

c:\[..]\My Documents\Sys>net use DD_PEPR /d
The network connection could not be found.

More help is available by typing NET HELPMSG 2250.


c:\[..]\My Documents\Sys>net use DD_PEPR\c$ /d
The network connection could not be found.

More help is available by typing NET HELPMSG 2250.


c:\[..]\My Documents\Sys>pause
Press any key to continue . . .

c:\[..]\My Documents\Sys>net use m: \\DD_PEPR\c$ [pass] /user:[domain\admin] || goto NO_CONN
System error 85 has occurred.

The local device name is already in use.


c:\[..]\My Documents\Sys>echo DD_PEPR 1>Pastefile_sar1.log

c:\[..]\My Documents\Sys>pause
Press any key to continue . . .[/more]
SK_AD.txt - файл со списком имен компов домена. Для теста там пока одно имя, комп стоит рядом.
Автор: Cokolok
Дата сообщения: 28.01.2010 18:40
bomzzz
не в том проблема, просто есть программа , в ней есть кнопочка свернуть, имя ей Minimize , а как здлетаь чтобы батник блин на него нажал сам.... чтобы прогу которую запутсил батник , он же и сварачивал данной командой... я ссылаюсь на пример..
hl.exe -game cstike тоесть запустить маю прогу с параметрами запуска, но я незнаю какая у данной программы пораметры запуска, может вы знаете как это можно унать ? -Minimize не катит (
Автор: bomzzz
Дата сообщения: 28.01.2010 18:48
батники не умеют клавиши нажимать - это умееют вбс скрипты http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=1491&start=1400#lt или сторонний софт Easy Macro Recorder например и еще есть очень распространенная программа со своим скриптовым языком не помню название на сером форуме по ней большая тема.
чтоб свернуть контрал страйк нужно нажать кнопку Windows. а чтоб изменит статус уже запущенного окна даже не соображу че надо.

прибей контрал страйк как процесс он и "свернеться" зайдешь потом снова не долго. или у тебя сервер? он может все время свернутым быть, можно невидимым его запустить
Автор: Cokolok
Дата сообщения: 28.01.2010 19:03
поковырялся, понял чтобы свернуть прогу надо задать ей параметор запуска /minimize а как и де , не понятно. прога myAC.
вот нашел, http://cs-monitoring.ru/_forumKo_/index.php?showtopic=3802365
но статью непонял =( мож кто поможет ?
Автор: bomzzz
Дата сообщения: 28.01.2010 19:04
или создать ярлык запуска в нем добавить к пути или батник.

в ярлыке например так примерно "C\Program Files\MyAC\MyAC.exe" /minimize
в батнике
start "C\Program Files\MyAC\MyAC.exe" /minimize
Автор: Cokolok
Дата сообщения: 28.01.2010 19:06
start "myACC\myAC.exe" /minimize
не пашет =(
может вы поимете де писать ? http://cs-monitoring.ru/_forumKo_/index.php?showtopic=3802365 я уже все перепробывал, везде повписывал. де можно ... ноль внимания
Автор: bomzzz
Дата сообщения: 28.01.2010 19:13
start "myACC\myAC.exe" /minimize
если так то батник должен лежать рядом с папкой myACC
Автор: Martsss
Дата сообщения: 29.01.2010 12:50
Здравствуйте. Подскажите пожалуйста, как можно из командной строки удалить альтернативные потоки в папке

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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