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

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

Автор: 222222
Дата сообщения: 17.09.2009 11:44
СОС. При запуске из батника одного приложения: приложение запускается, но какого-то черта остается окно командной строки. Батник:

Код: cd F:\1\1\1\1\1\
demo.exe
Автор: wolf0425
Дата сообщения: 17.09.2009 12:19

Цитата:
Батник, вроде, должен автоматически закрыться,
Не знаю кто кому что должен - у меня вот батники запущенные через start тоже сами по умолчанию не закрываются, пришлось для таких батников дописать в конец exit 0
но батники и так завершались - висел промпт смд.


Цитата:
Батник на проге останавливается:
ну видимо прога и держит. если хочешь чтоб батник не ждал ее окончания, а дошел до конца - запускай ее через start

а зачем настолько сложная система с последовательным запуском батников?

Автор: JohnRD
Дата сообщения: 17.09.2009 14:48
добрый день

подскажите пример какой нить как переименовать 1024 файлов с именами
tile_1_1.jpg
tile_1_2.jpg
tile_1_3.jpg
...
tile_1_1024.jpg

на 1 назад

tile_1_1.jpg должен быть tile_1_0.jpg
tile_1_2.jpg должен быть tile_1_1.jpg
...
tile_1_1024.jpg должен быть tile_1_1023.jpg



for %%I in (путь\*.jpg) do ren "путь\%%~nxI" "%%~nI.jpg" как единицу отнять

заранее благодарен
Автор: 01MDM
Дата сообщения: 17.09.2009 16:56
JohnRD
Не проверял, где-то так:

Код:
@echo off
setlocal
for /f "tokens=1-4 delims=_." %%1 in ('dir /b *.jpg') do call:ren "%%1" "%%2" "%%3" "%%4"
goto:eof

:ren
set /a num=%~3-1
ren "%~1_%~2_%~3.%~4" "%~1_%~2_%num%.%~4"
Автор: GRom V
Дата сообщения: 18.09.2009 08:07
Есть ли способ удалять файлы ТОЛЬКО БЕЗ РАСШИРЕНИЙ. Т.е естькуча файлов, среди них 234, wer, и еще с десяток так же без расширений?
Автор: 01MDM
Дата сообщения: 18.09.2009 08:31
GRom V

Цитата:
Есть ли способ удалять файлы ТОЛЬКО БЕЗ РАСШИРЕНИЙ

Рекурсивно удаляет файлы без расширений. С проверкой, что это файл, а не директория:

Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d') do (
if exist "%%~dpni" (
2>nul pushd "%%~dpni" && popd || del /q "%%~dpni"
)
)
Автор: JohnRD
Дата сообщения: 18.09.2009 08:50
01MDM

спасибо огромное, все очень красиво!
Автор: GRom V
Дата сообщения: 18.09.2009 08:55
Спасибки
Автор: 01MDM
Дата сообщения: 18.09.2009 09:01
GRom V
Посмотри, я изменил первоначальный батник. Как понял, тебе надо удалять файлы из подкаталогов тоже, т.к больше одного "ver" в одном каталоге не бывает.


Цитата:
Непредвиденное появление: %%i.

Это батник. Но старый вариант лучше не используй. Если будет каталог с названием одного из файлов, то может в нем "почикать" ненужное

Автор: kikozz
Дата сообщения: 18.09.2009 12:47
Комрады,заранее сорри . Не силен в командной строке.

Есть одноранговая сеть,со статическими IP на WinXP.Есть комп с админскими правами и юзерские рабочие станции с ограниченными правами.
Нужно с админского компа:
а) Проверить доступность машин.
б) Удалить папки или файлы со всех машин.
в) Скопировать папки или файлы на все машины.
с) Синхронизировать время на всех компах по машине админа.
Заранее благодарен за ответы.
Автор: wolf0425
Дата сообщения: 18.09.2009 17:11
а) Проверить доступность машин.
организовать цикл и пропинговать по файлу-списку или номерам ip
б) Удалить папки или файлы со всех машин.
если админский пароль на всех машинах одинаков и c$ шарится - взять и удалить.
желательно - после проверки на пингуемость, чтоб не тормозить на выключенных.
ping -n 1 192.168.0.NN && rd /q/s \\192.168.0.NN\c$\dokuments\папка
в) Скопировать папки или файлы на все машины.
аналогично б
с) Синхронизировать время на всех компах по машине админа.
если точность до ~секунды устраивает - то что-то типа
psexec \\192.168.0.NN -s cmd /c time %time%

192.168.0.NN во всех записях это или ip адрес или сетевое имя компа из первого пункта, подставляются из переменной цикла...

т.е. в сумме чего-то типа


Код: for /f %%a in (comp.lst) do call :_proc %%a
goto :eof

:_proc
ping -n 1 %1 >nul||echo computer %1 not respond && goto :eof
rd /q/s \\192.168.0.NN\c$\tempfiles
copy /b /y c:\alldocuments\telefones.xls \\%1\c$\documents\
psexec \\%1 -s cmd.exe /c time %time%
goto :eof
Автор: egor23
Дата сообщения: 18.09.2009 17:54
@echo off
nz.exe x arhive.nz

Выводится:

Цитата:
NanoZip 0.07 alpha/Win32 - (C) 2008-2009 Sami Runsas - www.nanozip.net
Host: ...

Есть ли возможность подавить вывод этих строк?
http://nanozip.net/nanozip.0.07a.win32.zip
Автор: sL4yer
Дата сообщения: 18.09.2009 18:00
подскажите, как записать в переменную результат работы команды?

set DIRECTORY=C:\FILES
set EXT=.exe

for %%i in (*%EXT%) do (
if exist %DIRECTORY%\%%i && set C=1
set name=echo %%i|sed s/%EXT%//
echo %name%
)

То есть, мне нужно взять имя файла без расширения из директории и записать его в переменную.
Автор: wolf0425
Дата сообщения: 18.09.2009 18:07
sL4yer
Цитата:
подскажите, как записать в переменную результат работы команды?
это делается через for /f "delims=" %%a in (' command ') do set "result=%%a"
Цитата:
for %%i in (*%EXT%) do (
if exist %DIRECTORY%\%%i && set C=1
set name=echo %%i|sed s/%EXT%//
echo %name%
)
а тут вообще привлекать sed незачем...
Цитата:
мне нужно взять имя файла без расширения из директории
по твоему варианту это не скажешь - в нем имя берется от файла в текущей, а с=1 устанавливается только если такой же файл есть и в %DIRECTORY% тоже.

И замечу что echo %name% внутри цикла работать так как ты надеялся - не будет.

А хотел ты похоже что-то такое:

Код: for %%i in (*%EXT%) do set "name=%%~ni" && if exist %DIRECTORY%.\%%i set "C=1"
echo %name%
Автор: sL4yer
Дата сообщения: 18.09.2009 21:28
wolf0425
спасибо за всё, я уже разобрался.

Добавлено:
wolf0425

Код:
@echo on

setlocal enabledelayedexpansion
set DIRECTORY=C:\pics\copy\
set EXT=.jpg

for %%i in (*%EXT%) do (
if exist %DIRECTORY%%%i set C=1
set "name=%%~ni"
ren %%i !name![!C!]%EXT%
move !name![!C!]%EXT% %DIRECTORY%
)
Автор: wolf0425
Дата сообщения: 19.09.2009 00:58

Цитата:
Потом еще модифицирую, что б наращивало цифры, если такая уже занята. Если хочешь - подскажи.
наверно ты вот такое хотел:

Код: @echo off
set DIRECTORY=C:\pics\copy
set EXT=.jpg

for %%i in (*%EXT%) do call :renm "%%~ni"
goto :eof

:renm
if not exist %DIRECTORY%\%1%EXT% move %1%EXT% %DIRECTORY%\ & goto :eof
set "C=1"
:next
if exist %DIRECTORY%\%1[%c%]%EXT% set /a c += 1 & goto :next
move %1%EXT% %DIRECTORY%\%1[%c%]%EXT%
goto :eof
Автор: ZolotnikOV
Дата сообщения: 19.09.2009 20:09
Добрый день!

Такая ситуация:
нужно с локальных машин подключаться на удаленний сервер напрямую. что бы пользователь не работал в виндовсе локальной машини.

на локальной машине будет 2 пользователя: админ и user#
для user# я заменил в реестре проводник на RDС. теперь при входе в систему сразу выдает Окошко подключения к удаленному компьютеру. такой себе недо"Тонкий клиент"))

но проблема заключается в том, что когда закрыть RDС, то видим только картину и ничего не работает (так как проводника я вырубил, а RDС не перегружается автоматом).

приходиться через Диспетчер задач вызывать експлорера, либо завершать сеанс и входить по новому. А в идеале нужно было бы и его запретить запускать.
вот пришла мне мысль сделать для этого какой то батник что бы контролировал наличие подключения по RDP (например проверка на предмет использования порта 3389 если не ошибаюсь) и в случае отсутсвия перезапускать RDС.

Я вообще юрист и мне сложно написать что то такое, поэтому прошу помощи.
Это вообще возможно?
Заранее благодарен.
Автор: tolyn77
Дата сообщения: 20.09.2009 06:49
подскажите можно как нибудь из командной строки получить ключ винды и офиса?
Автор: Stritch
Дата сообщения: 20.09.2009 22:08
Помогите пожалуста!

Есть задача...
Составить батник создающий каталог d:/students_3_g/Фамилия и обеспечивающий пользователю Фамилия следующие сетевые права-доступ отсутствует.

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

Буду премного благодарен за помощь!
Автор: 01MDM
Дата сообщения: 21.09.2009 00:07

Цитата:
И вторая.
Составить бат файл выводящий список файлов содержащихся в каталоге system32 в именах которых,состоящих не более чем из трех букв,содержится не более чем один раз буква "а"


Код:
@echo off
dir /b /a-d C:\Windows\System32 | findstr /i "^a[^a][^a]\..*$ ^[^a]a[^a]\..*$ ^[^a][^a]a\..*$" 1>list.txt
Автор: wolf0425
Дата сообщения: 21.09.2009 12:01

Цитата:
\..*
01MDM, это предполагается что файлов без расширения (например abc) в каталоге System32 не окажется? Или я чего-то в регэкспе не понял?

Автор: 01MDM
Дата сообщения: 21.09.2009 12:58
wolf0425
Кроме того может существовать файл и с точкой в названии (например abc.def.txt)
В общем случае и этот вариант подойдет, просто не хотелось запускать в цикле и смотреть каждый %%~ni. Да и задача больше смахивает на домашнее задание. В прошлом году спрашивали нечто похожее.

Ну и регэкспы в findstr..

Можно еще так:

Код:
@echo off
setlocal

pushd %SystemRoot%\system32
for %%i in (a??.* ?a?.* ??a.*) do call:1 %%i
popd
goto:eof

:1
set "name=%~n1"
if not "%name:~2,1%"=="" echo %~n1 | 1>nul findstr /i /v "a.*a" && echo %1 1>>"%~dp0list.txt"
Автор: Stritch
Дата сообщения: 21.09.2009 21:51
спасибо за решение второй задачи....подходят оба способа....
Автор: ferritus
Дата сообщения: 21.09.2009 22:13
Какой переменной определить локальную папку из которой производится запуск bat'ника?
Разобрался
Автор: korosya
Дата сообщения: 22.09.2009 00:16
Подскажите, возможно ли из командной строки изменить версию файла?
Автор: Shadow4
Дата сообщения: 23.09.2009 14:42

Нужен батник на рестарт виндовс.

Заранее огромное спасибо!
Автор: ShriEkeR
Дата сообщения: 23.09.2009 14:44
Shadow4
shutdown /r
Автор: anachrom
Дата сообщения: 23.09.2009 15:06
Уже спрашивал, так никто и не откликнулся. Спрошу еще раз.
Подскажите как осуществить условие:
если процесс запущен то ... иначе ...
если процесс запущен 2 и более раза то ... иначе ...
заранее спасибо.
Автор: slech
Дата сообщения: 23.09.2009 15:18
подскажите как выполинть цикл 100 раз скажем

спасибо.
Автор: wolf0425
Дата сообщения: 23.09.2009 15:41
slech FOR /L %%a IN (1,1,100) DO echo %%a

anachrom
Цитата:
если процесс запущен то ... иначе ...
А там точно обе ветки непусты - и положительная и отрицательная?
Код: tasklist | find /i "process.exe" && echo "process.exe" is runnign && goto :_L
echo "process.exe" is not running
:_L

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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