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

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

Автор: lid111
Дата сообщения: 21.01.2008 00:26
Подскажите батник по удалению всех папок с заданным именем ХХХ из заданного каталога YYY, содержащего подкаталоги, в них еще подкаталоги и т. д., причем папки XXX могут находиться на любых разных уровнях этой лестницы.
Автор: 01MDM
Дата сообщения: 21.01.2008 01:30
lid111
Попробуй вот так

Код:
@echo off
for /r "YYY" /d %%i in (*) do (echo "%%i" | findstr "XXX" && rd /s /q "%%i")
Автор: lid111
Дата сообщения: 21.01.2008 01:57
Не получается что-то. А это сработало:
http://forum.oszone.net/post-720601.html
Автор: king_stiven
Дата сообщения: 21.01.2008 02:23
lid111

for /r "YYY" %%i in (.) do (
if "%%~ni"=="ХХХ" rd "%%i" /s /q
)

где YYY полный путь
ХХХ только имя папки
Автор: 01MDM
Дата сообщения: 21.01.2008 08:25
lid111

Цитата:
Не получается что-то. А это сработало:
http://forum.oszone.net/post-720601.html

Ну так там ты ставишь одно условие, здесь совсем другое. Правильный вопрос - правильный ответ.
Автор: lid111
Дата сообщения: 21.01.2008 09:43
01MDM

Цитата:
Ну так там ты ставишь одно условие

Там условие ставлю не я! Просто случайно нашел в сети, подставил, от фонаря, ничего не понимая в DOS, вместо того, что между кавычками в примере, свое XXX, и все подпапки с этим названием благополучно исчезли.
Автор: king_stiven
Дата сообщения: 21.01.2008 09:58
01MDM
lid111

Оба примера не совсем корректны, например если искать в каталоге C:\temp\45\12345678\Sections\ папки для удаления с именем 456, то весь каталог C:\temp\45\12345678\Sections\ удалится.
Не проверял, возможно неправильно рассуждаю.
Автор: 01MDM
Дата сообщения: 21.01.2008 10:26
lid111
Может просто что-то не так подставил. Главное решил в результате свою задачу.
king_stiven

Ну наверное что-то вроде, если точное имя "456"

Код:
@echo off
for /r "C:\temp\45\12345678\Sections" /d %%i in ("456") do rd /s /q "%%i"
Автор: lid111
Дата сообщения: 21.01.2008 12:58
По адресу http://forum.oszone.net/post-720601.html, на который я сослался выше, уже, смотрю, предлагают новые рецепты, а у меня из всего предложенного здесь и там помогло только то, что на oszone в посте от busla:

Код: @echo off
if exist %temp%\dirs.txt erase %temp%\dirs.txt
for /r %%i in (.) do echo %%i >> %temp%\dirs.txt
for /f %%d in ('findstr /r /c:".*\\~[^\\]*\\\." %temp%\dirs.txt') do rd /s /q %%d
Автор: 01MDM
Дата сообщения: 21.01.2008 17:05
lid111

Цитата:
положил его в каталог YYY

Ну конечно, в этом каталоге нет еще одного YYY , надо указывать как подсказал king_stiven

Цитата:
где YYY полный путь

А теперь попробуй запустить озоновский батник из другого каталога.
Нельзя все примеры применять буквально.


Автор: king_stiven
Дата сообщения: 21.01.2008 17:46
01MDM

Да скорей всего надо ещё добавить команду

chcp 1251 > nul

мы уже к этому привыкли, а человек пока пользуется интуицией
Автор: lid111
Дата сообщения: 21.01.2008 18:58
@echo off
for /r "C:\" /d %%i in ("*роро*") do rd /s /q "%%i"
chcp 1251 > nul

это из вышесказанного king_stiven и 01MDM. Папки и подпапки на диске С, содержащие "роро" в названии - остались на месте.

Автор: king_stiven
Дата сообщения: 21.01.2008 19:13
lid111

1 так у тебя папка имеет конкретное имя `роро` или `*роро*` ?

2 в таком порядке используй

@echo off
chcp 1251 > nul
...

3 кстати в моём примере `РоРо` тоже не пройдёт, если без различия верхнего и нижнего регистра букв надо, тогда

if /i "%%~ni"=="ХХХ" rd "%%i" /s /q
Автор: lid111
Дата сообщения: 21.01.2008 19:30
king_stiven

Цитата:
2 в таком порядке используй

@echo off
chcp 1251 > nul


Спасибо, так сработало. Я ведь в досе - ноль, прочитал - добавить команду, и добавил, куда не попадя. А что кас.

Цитата:
у тебя папка имеет конкретное имя `роро` или `*роро*` ?

то в данном случае я попробовал с *роро*. Я ведь для проверки батника создаю новые каталоги, отфонарные, чтоб не жалко было...

А моя ссылка на oszone уже нерабочая - куда-то там дели эту страницу - переместили или снесли...

Автор: jupiter1976
Дата сообщения: 22.01.2008 13:28
Подскажите плиз, как правильно записать строку: зайти на определенный комп в сети (по ip) и зайти на админский ресурс используя имя и пароль для запуска определенной софтины(для наглядности, но неверно - \\192.168.1.1\с$pass\soft.exe)
Автор: cluster
Дата сообщения: 22.01.2008 14:24
Ребят, думаю, не первый задам вопрос - есть ли автоматизированные средства просканить все компы в домене и сформировать файлик с пользователями, которые залогинены в данный момент на этих ПК?
Автор: PuzzleW
Дата сообщения: 22.01.2008 14:42
jupiter1976
net use /?

net use \\192.168.0.1\c$ PASSWORD /user:USERNAME
Автор: 01MDM
Дата сообщения: 22.01.2008 15:10
cluster
Попробуй утилиту psloggedon.exe, она, вроде, для этого подойдет. Проверить негде.
http://technet.microsoft.com/ru-ru/sysinternals/bb897545(en-us).aspx
Автор: SymA
Дата сообщения: 22.01.2008 22:01
Если на батник с таким кодом:


Код:
cmdow @ /hid
rem Some code here
Автор: Elisaveta
Дата сообщения: 22.01.2008 22:19
Уважаемые пользователи!
Нужно решение такой задачи:"подсчитать количество файлов определённого типа ну указаном диске"(Вообщем первым делом вывести список существующих дисков и возможность выбора одного из них.Второе ввод типа файлов которые будем искать,тоесть с клавиатуры вводим например "txt" или "doc" или любой другой набор).
Заранее благодарна
Автор: Grim_Repo
Дата сообщения: 22.01.2008 22:42
Здравствуйте, подскажите пожалуйста батник для удаления всех файлов заданных разрешений, в любом месте (включая скрытые и системные папки), без помещения в корзину?
Например:
На диске С: имеются каталоги 1, 22, 098, а внутри нах находятся файлы с разрешением *.xxx и *.yyy но помимо этих файлов в каталогах 1, 22, 098 есть каталоги 2, 33, 099 внутри которых лежат файлы *.xxx и *.yyy, а также в этих каталогах есть другие каталоги и т.д. P.S. Окошка не должно быть видно. И возможно ли сделать так чтобы он проделывал эту операцию по всем установленным в копьютере носителям данных?

P.P.S.
И подскажите, пожалуйста, хороший учебник по написанию bat'ников.

Добавлено:
И подскажите, будут ли работать такие батники:

Код: ping xxx.xxx.xxx.xxx. -t
Автор: 01MDM
Дата сообщения: 23.01.2008 00:40
SymA
Для ярлыка лучше cmdow /run /hid some.cmd

Elisaveta
На сколько точно не проверял
Вводить только букву и расширение без точки

Код:
@echo off
setlocal
fsutil fsinfo drives
set /p disk="Only Letter: "
set /p ext="Extension without dot: "
for /f "tokens=*" %%i in ('dir /b /s /a-d "%disk%:\*.%ext%"') do set /a count+=1
echo %count% %ext%-files
Автор: PuzzleW
Дата сообщения: 23.01.2008 03:02
SymA - когда у меня встала такая задача - я обошёлся следующим образом (про cmdow узнал только что из гугла)

----------------file.vbs-----------
sPath = "D:\\Work"
sCmd = "subst W: " & sPath
Set WshShell = Wscript.CreateObject("WScript.Shell")
WshShell.Run sCmd, 0, true
--------------/file.vbs------------


А ярлык соответственно:
на это vbs файл (он открываеться на обработку wscript.exe - не вызывая окошек)
отлаживать из командной строки лучше с использованиям cscript.exe file.vbs

Grim_Repo
ping xxx.xxx.xxx.xxx -t работает в батнике на ура
более того время ping localhost очень приблизительно равно 4 секундам.

copy /y source font.ttf + source font2.ttf destination c:/windows/fonts
_______^^^^________^^^^^_______^^^^^^^______________
лишние блоки и ты потерял название файла в который "сольються" твои font.ttf и font2.ttf

выход - exit
Автор: Dekabryi
Дата сообщения: 23.01.2008 07:55
Доброе время суток !
есть задача
список компутеров его нужно пропинговать и выевить из них мертвый а у живых узнать IP
Автор: 01MDM
Дата сообщения: 23.01.2008 09:39
Dekabryi
Попробуй, параметры ping сам подправь

Код:
@echo off
setlocal
for /f %%i in (list.txt) do call:_ping %%i
goto:eof
:_ping
for /f "tokens=2 delims=[]" %%i in ('ping %1 ^| findstr %1') do (
echo %1 %%i 1>>list_after.txt && set flag=1
)
if not defined flag echo %1 is dead 1>>list_after.txt
set flag=
Автор: Dekabryi
Дата сообщения: 23.01.2008 11:15
01MDM
Супер решения сенкс

Вот Альтернативный способ от SE111

FOR /F "eol=; tokens=1" %%i in (1.txt) do ping -n 1 %%i | find "TTL=" && echo %%i >> c:\temp\pinguetsya.txt


В файл пишутся живые хосты

Автор: Grim_Repo
Дата сообщения: 23.01.2008 11:37
2PuzzleW Спасибо за совет! Подскажите, а вот так будет правильно?
copy /y font.ttf + font2.ttf c:/windows/fonts/ exit
_____________^^__________________________ - Эти пробелы не нужны?


Цитата:
ты потерял название файла в который "сольються" твои font.ttf и font2.ttf

Всмысле?
Автор: OOD
Дата сообщения: 23.01.2008 14:05
помогите написать батник, который будет копировать файлы из папки ./ на сетевую шару //comp/shara в цикле по маске файлов текущая_дата.*

Автор: PuzzleW
Дата сообщения: 23.01.2008 15:22
Grim_Repo
если твоя задача скопировать "встык" два файла шрифта и поместить результат в третий файл, то правильныйм будет вот такой код

Код:
copy /b file.ttf+file2.ttf c:\windows\fonts\font3.ttf
Автор: lastduke
Дата сообщения: 23.01.2008 17:20
товарищи, помогите решить такую задачу - есть папка, в которую падает файл, например с:\temp\file_ddmmyy.xls (имя файла меняется каждый день)

Требуется создать второй файл, который будет содержать имя первого файла и через пробел еще одно слово, которое будет вписываться через %2. например file_ddmmyy.xls word

вот думал так дожно работать, но нет ) наверное где-то недопонял.
подскажите как оно должно быть.

set PATH=c:\temp
echo %~nx$PATH:1 %2>с:\temp\file2.txt


заранее благодарю.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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