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

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

Автор: Nagual
Дата сообщения: 29.04.2008 14:27
Tipulatoid

Цитата:
Насколько я понял задачу:

правильно понял, я немного не так описал
в общем все работает, только перечисленные пути должны быть абсолютными
иными словами, вывести все подкаталоги указанного каталога, используя команду dir/b/s/a:d D
при этом вывод осуществляется как список, содержащий вывод в каждой строке (разделитель — перевод строки)
а нужно, чтобы вывод был в одной строке и разделителем служил бы знак ;
Автор: Joolz
Дата сообщения: 29.04.2008 14:27
AdepTcs

Цитата:
хм... ответа я видимо не дождусь

Суть в том, что по сети эта ветка реестра не доступна. Доступны лишь HKLM и HKU.

Упс. Тут же psexec. У меня все сработало, только я путь к выгружаемому файлу прописал полный.
Автор: Nagual
Дата сообщения: 29.04.2008 14:35
Tipulatoid
Код:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b /s /a:d D') do call :label1 %%a
echo %var:~1%
goto
:eof


:label1
if %~1=="" goto
:eof
set symbol=0
set foldernum=0

:next
set
stroka=%~1
set /a symbol+=1
if "!stroka:~%symbol%,1!"=="\" set /a foldernum+=1
if "!stroka:~%symbol%,1!" NEQ "" goto next
set /a foldernum+=1
for %%a in (%~1) do set var=!var!;%%a
goto
:eof
спасибо
Автор: Tipulatoid
Дата сообщения: 29.04.2008 14:38
Nagual

Код: @echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /s /a:d') do set var=!var!;%%a
echo %var:~1%
Автор: bmax
Дата сообщения: 29.04.2008 14:45
А по моемУ вопросу, проблема в секундах или в чем-то еще? Возможно ли решение?
Подскажите кто знает, спасибо
Автор: Tipulatoid
Дата сообщения: 29.04.2008 15:14
bmax
Да, лично я не в курсе как секунды узнать.
Автор: Nagual
Дата сообщения: 29.04.2008 15:18
Tipulatoid
оно самое, спасибо
Автор: bmax
Дата сообщения: 29.04.2008 15:25
Tipulatoid
Понятно, подождем может кто натолкнет на мысль, или подскажет как еще можно реализовать выборку соответствующего файла.
Автор: NIKZZZZ
Дата сообщения: 29.04.2008 15:32
mrGizmik
Этот вопрос был несколько страниц назад - нужно указать, что передается двоичный файл, по умолчанию ASCI.

Автор: smbsmb
Дата сообщения: 29.04.2008 15:47
Подскажите, как сделать такое:
У меня есть два VPN-соединения с инетом, которые я подключаю одновременно.
Мне нужно задать, с каким сайтами я буду работать через одно соединение,
а с какими - через другое.
Последний по очереди VPN прописывает маршрут по умолчанию,
и все идет через него.
Но если выполнить команду, например для IP-адресов Яндекса
route add 213.180.204.0 mask 255.255.255.0 10.16.57.225
то тогда на Яндекс ходит через один VPN, а на все другое - через другой.

Проблема в том, что IP-адрес выдается VPN-сервером иногда разный
(в этот раз был 10.16.57.225).

Откуда удобнее получить адрес в bat-файле?
Из вывода команды ipconfig неудобно, по-моему.

Вообще, правильно ли я подхожу к решению вопроса?
Автор: bmax
Дата сообщения: 29.04.2008 15:53
Еще спрошу касательно моего вопроса на предыдущей странице почему может некорректно отрабатываться ситуация:

more +3 "D:\2\%%f" | findstr "qwe rty uio" 1>nul || (
copy /y /D "D:\2\%%f" "D:\3\17%date:~0,2%%count%.dvc"

т.е. например последовательность "rty" в файле присутствует а он все равно копируется
Автор: Valdon
Дата сообщения: 29.04.2008 15:54
Чето затупил... Как по ECHO вывести то что в консоли выводится набирая:time /t, т.е. как подцепить ключ /t ?
ЗЫ: Пока так делаю: ECHO %TIME:~0,5%
Автор: KapralBel
Дата сообщения: 29.04.2008 16:20
Valdon
Ты немного спутал
оператор Time
и предопределенную переменную %Time%

Time /T можно использовать без ECHO
Автор: Valdon
Дата сообщения: 29.04.2008 16:38
KapralBel, ладно, как попроще тогда в ECHO добавить оператор Time /T ?
For /F %%i In ('Time /T') DO Set T=%%i
Echo %T%
Может так?
Автор: mrGizmik
Дата сообщения: 29.04.2008 16:52
по моиму вопросу кто-то поможет?
Автор: Leopold70
Дата сообщения: 29.04.2008 17:04
Не совсем дружу с програмированием, помогите, обращаюсь к светлым умам.
... есть папочка ORG в ней около двух сот папочек с неизвестным именем,
в в каждой из тех папочек есть под папочки по дате в формате DDMM-день месяц

D:\ORG\Неизвестное Имя 1\DDMM\
..........................
\Неизвестное Имя 200\DDMM\

в эти папочки попадают файлы *.dbf; *.txt. Требуется из каждой папочки имя которой
соответствует текущей дате DDMM архивировать *.dbf; *.txt. в папочку C:\mail\ имя архив, должен получить от имени файлов, если 256ORG.dbf то архив 256ORG.ARJ. и по месту нахождения файлов в папках DDMM должен остаться такой же архив.

Многие задачи решались с помощью Вашего форума, аналога этой не нашел
помогите решить эту задачку с помощью Батника.
Автор: Valdon
Дата сообщения: 29.04.2008 19:22
Знаю как получить TimeZone на удаленном компе(Comp2):
WMIC /NODE:"Comp2" OS GET CurrentTimeZone
Может ктонить подскажет, можно ли через WMIC, изменить TimeZone удаленного компа?
Автор: Dantis
Дата сообщения: 29.04.2008 19:49
    Привет всем =). У меян появилось еще пара вопросов...

1) Как Запустиьть с Помощью Батника Службу?? ( имя ее Diskeeper )
2) Как убить процесс avp.exe (Антивирус Карсперского 6.0 ) и oupost.exe (Фаер Вол OutPost 4.0) (через диспетчер задач я их убить не могу =( )
3)
Как запутить программы с помощью батника.&

пишу start F:\Проги\Norton WinDoctor 2007\WINDOC.EXE и не работает.... похоже запинается на русских буквах и пробелах =(

Мне надо запустить пару файлов:

F:\Проги\Norton WinDoctor 2007\WINDOC.EXE
F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc
F:\Проги\VitSoft\Vit Registry Fix\Vit Registry Fix 4.2.exe
F:\Проги\CCleaner2.03\CCleaner.exe


PS/ просто при чистке компа (Реестра\ дефрагментации дисков) я закрываю все процессы которые можно закрыть.и запускаю эту службу (в ручную) и запускаю проги.... хотелось бы автоматизировать этот процесс.
Автор: AdepTcs
Дата сообщения: 30.04.2008 02:15

Цитата:
Проверь Windows\System32 директорию. Твой reg файл должен быть там.


в том то и дело, что комадна вообще не отрабатывается, то есть файлик reg вообще не создается (даже указывая полный путь создания файла c:\ps.reg )
Автор: bmax
Дата сообщения: 30.04.2008 08:19
На всякий случай спрошу еще раз, может кто-нибудь подскажет, или скажет куда еще можно обратиться за помощью

Помогите пожалуйста поправить код:
Необходимо найти последний файл в папке "D:\1" и определить дату его создания(вплоть до секунд).
Затем в папке "D:\2" найти найти файл созданный в это же время и при условии что в этом файле не присутствует последовательноть символов "qwe" или "rty" или "uio" он копируется в папку "D:\3"

Цитата:
@echo off
FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\3\*.*"') do set /a count+=1
IF EXIST D:3\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (

- определить дату создания последнего файла(с секундами)???????

- найти в папке D:\2 файл с такой же датой создания и если выполняется условие?????????

more +3 "D:\2\%%f" | findstr "qwe rty uio" 1>nul || (
copy /y /D "D:\2\%%f" "D:\3\17%date:~0,2%%count%.dvc"
goto :eof
)
)

Спасибо!
Автор: Serhi_84
Дата сообщения: 30.04.2008 09:58
Люди, подскажите, пожалуйста, где глюк?
Задача - вывести последние N строк из файла в другой файл (N задается как параметр при запуске скрипта). Если строк в файле меньше, чем N - выводим все строки.

Идея - считаем общее количество строк, вычитаем N - получаем параметр skip для for.

set cnt = 0

for /F "delims=$" %%a in (c:\test\log.txt) do set /a cnt+=1

set /a nstr = (%cnt% - %1)
IF %cnt% LEQ %1 (
for /f %%b in (c:\test\log.txt) do echo %%b >> c:\test\log2.txt
) else (
for /f "skip=%nstr% tokens=*" %%c in (c:\test\log.txt) do echo %%c >> c:\test\log2.txt
)

Почему то не срабатывает. И еще проблема в том, что в файле где-нибудь посередине могут быть пустые строки, то есть нужно выводить последние N значимых строк.


P.S. заработало, изменил условие на IF %nstr% LEQ 0. Сейчас даже если посредине есть пустые строки он их просто игнорирует и не считает
Автор: Leopold70
Дата сообщения: 30.04.2008 10:20

Цитата:
D:\ORG\Неизвестное Имя 1\DDMM\
..........................
\Неизвестное Имя 200\DDMM\


Решил свою задачку так:

if not exist D:\ORG goto er

cd D:\ORG\

SET DM=%DATE:~0,2%%DATE:~3,2%

FOR /R %%i IN (%DM%) do (
cd %%i
for /f "tokens=1,2 delims=." %%a in ('dir /b *.txt *.dbf') do (
ARJ32 M -E -JM %%i\%%a.ARJ %%a.txt %%a.dbf || (
copy %%i\%%a.ARJ C:\mail\
)))
exit
:er

если возможно покрасивее, подскажите?
Автор: king_stiven
Дата сообщения: 30.04.2008 11:18
Serhi_84
Давай распишем задачу:
всего строк пусть будет 100
из них 13 и 67 пустые
тебе нада вывести 50 последних строк, т. е. учитывая пустую 67 строку:51 последнюю строку, включая пустую, так?
Автор: Serhi_84
Дата сообщения: 30.04.2008 11:25
king_stiven, да так.
Хотя у меня в исходном файле все сплошным текстом идет, на всякий случай себя обезопасить, потому что если встретится пустая строка, то общее количество строк скрипт будет считать от начала до пустой строки, а последующие строки просто проигнорирует
Автор: Dantis
Дата сообщения: 30.04.2008 13:31
мне о кто нить с этим поможет??


Привет всем =). У меян появилось еще пара вопросов...

1) Как Запустиьть с Помощью Батника Службу?? ( имя ее Diskeeper )
2) Как убить процесс avp.exe (Антивирус Карсперского 6.0 ) и oupost.exe (Фаер Вол OutPost 4.0) (через диспетчер задач я их убить не могу =( )
3)
Как запутить программы с помощью батника.&

пишу start F:\Проги\Norton WinDoctor 2007\WINDOC.EXE и не работает.... похоже запинается на русских буквах и пробелах =(

Мне надо запустить пару файлов:

F:\Проги\Norton WinDoctor 2007\WINDOC.EXE
F:\Проги\Diskeeper Corporation\Diskeeper\Diskeeper.msc
F:\Проги\VitSoft\Vit Registry Fix\Vit Registry Fix 4.2.exe
F:\Проги\CCleaner2.03\CCleaner.exe


PS/ просто при чистке компа (Реестра\ дефрагментации дисков) я закрываю все процессы которые можно закрыть.и запускаю эту службу (в ручную) и запускаю проги.... хотелось бы автоматизировать этот процесс.


Ответте хотя бы на 1-вый вопрос..
Автор: Cheerful_a_bear
Дата сообщения: 30.04.2008 13:50
Привет всем
Уже сутки читаю форум, начал с Первой части, жаль, что нет поиска по форуму, не смог найти объективного решения задачи.
ПОМОГИТЕ.
Вот мой шедевр...

@echo off
md c:\BackUP\DOC\
md c:\BackUP\XLS\
for /R %%f IN (.) DO (
cd %%f
xcopy/v /y "*.doc" "c:\BackUP\DOC\"
xcopy/v /y "*.xls" "c:\BackUP\xls\"
cd ..
)
rar.exe a -r -agdd-mm-yyyy -m5 -df -y c:\BACKUP\Архив\Архив_DOC_за_.rar c:\BackUP\DOC\
rar.exe a -r -agdd-mm-yyyy -m5 -df -y c:\BACKUP\Архив\Архив_XLS_за_.rar c:\BackUP\XLS\


Как сделать так, чтобы архивные файлы старше месяца автоматически удалялись, а на их место записывались новые?
Автор: bmax
Дата сообщения: 30.04.2008 13:55
Свою задачу так и не решил, поэтому решил пойти другим путем:

Помогите пожалуйста поправить код:
Необходимо найти последний файл в папке "D:\1" и определить его имя
Затем в папке "D:\2" взять известный нам файл скажем qqq.dat и определить номер строки в которой втречается имя найденного выше файла.(причем заведомо известно что оно может встретиться только один раз, поэтому как только нашли - дальше искать не стоит) Затем в папке "D:\3" берем файл с именем 'старое имя' +'номер строки' + 'старое расширение' и копируем его в папку "D:\4" с переименовыванием


Цитата:
@echo off
FOR /f "tokens=*" %%i in ('dir /b /s /a-d "D:\4\*.*"') do set /a count+=1
IF EXIST D:3\*.* set "count=0%count%" ELSE
set "count=00%count%"
set "count=%count:~-2%"
for /f "tokens=*" %%c in ('dir "D:\1\*.*" /o:-d /t:c /b /a:-d') do (

- присвоить имя найденного файла переменной???????

- взять в папке D:\2 файл qqq.dat и определить номер строки в которой встречается имя найденного выше файла ??????????

- Затем в папке "D:\3" берем файл с именем 'старое имя' +'номер строки' + 'старое расширение' и копируем его в папку "D:\4" с переименовыванием???????????

copy /y /D "D:\3\%%f" "D:\4\17%date:~0,2%%count%.dvc"
goto :eof
)
)


Надеюсь на вашу помощь!
Спасибо!
Автор: king_stiven
Дата сообщения: 30.04.2008 14:15
Serhi_84
Подобный пример был ранее рассмотрен, если строка начинается с пробела или пустая строка работать не будет. Наверно лучше утилитки текстовые юзать, сам их не иcпользую.

Cheerful_a_bear
Справку к рару читал?
Автор: 01MDM
Дата сообщения: 30.04.2008 14:52
del
Автор: Cheerful_a_bear
Дата сообщения: 30.04.2008 15:21
ДА прочитал подробно но решения не вижу...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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