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

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

Автор: 01MDM
Дата сообщения: 15.08.2009 10:28
anachrom

Цитата:
Как указать что имя файла, в который будет все записываться будет носить имя компьютера. Команда hostname позволяет выводить это имя, но вот с файлом ... имя файла так и остается hostname.

Выбирай:

Код:
@echo off

echo 1 1>"%computername%.txt"
echo 2 1>>"%userdomain%.txt"
for /f "tokens=*" %%i in ('hostname') do echo 3 1>>"%%i.txt"
Автор: Shadow4
Дата сообщения: 15.08.2009 22:26
anachrom


Цитата:
@echo off
setlocal

for /f "tokens=4" %%i in ('sc query telnet ^| findstr /i "state"') do (
set "checksrv=%%i"
)

if /i "%checksrv%"!==!"running" (
shutdown -r
)


Тупо все скопировал, пробелы в каждой строке поубирал, неработать.........

вот батник http://rapidshare.de/files/48125530/1.rar.html

Его потом в планировщик, или он гдет висит и работает самостоятельно????????
Автор: igor_andreev
Дата сообщения: 16.08.2009 01:47
Shadow4
sc query TlntSvr
и восклицательный знак в == с какой-нить одной стороны поставь от переменной checksrv
Автор: anachrom
Дата сообщения: 16.08.2009 14:35
Есть интерес написать батник, который бы удалял все файлы по определенной маске в коталоге, где он находится и в его подкоталогах.
Знаю про команду del которая удаляет, знаю про for /r.
Для одного включения получается

Код:
for /r d:\all %%i in (*.tmp) Do (
del /q "%%i")
Автор: 01MDM
Дата сообщения: 16.08.2009 14:58
anachrom
В папке test несколько подпапок разного уровня с файлами. Удаляются *.txt и *.tmp:

Код:
@echo off
chcp 1251 1>nul

pushd test
for %%i in (*.txt *.tmp) do del /s "%%i" 1>>"%~dp0\del.txt"
popd
Автор: anachrom
Дата сообщения: 16.08.2009 22:13
01MDM
Спасибо, я почему-то на ключе /s у del внимания не заострил, да и с циклами у меня пока плоховато.
Потестил и нашел неприятные баги. Первое файл спрятан глубже 1 уровня, то он неудоляется (т.е. в каталоге temp сносит, а в его подкоталогах и еще глубже нет). Второе, это идет дозапись в файл, т.е. если этот батник будет ежедневно запускаться, то лог очень широко разрастется.
P.S. Посидел, подумал и придумал интереснее. Батник все файлы по маске перемещает в одну заданную папку (назовем ее темп) и ведет лог. При следующем старте папка temp очищается вместе с log-файлом, и происходит поиск новых жертв. И еще, если возможно, для маски фалов сделать файлик.
Извииняюсь если прошу мног, но здесь всегда помогают.
Автор: 01MDM
Дата сообщения: 16.08.2009 23:10
anachrom

Цитата:
Первое файл спрятан глубже 1 уровня, то он неудоляется (т.е. в каталоге temp сносит, а в его подкоталогах и еще глубже нет)


Да, что-то не так. При первом запуске действительно файлы остались. При повторном удалились..

Другой вариант, с перемещением в temp.

Код:
@echo off

rd /s /q temp 2>nul
md temp\files 2>nul

for /f %%i in (ext.txt) do (
for /f "tokens=*" %%i in ('dir /b /s /a-d "%temp%\%%i"') do (
echo %%i 1>>temp\moved.txt
move /y "%%i" temp\files
)
)
Автор: anachrom
Дата сообщения: 17.08.2009 07:50
01MDM
Спасибо, все в принципе просто, только я немогу разобраться с 2>nul

Добавлено:
А что бы список папок для прочистки из файла folder.txt
так же
for /f %%j in (folder.txt) do (
дальше, просматриваются %%j на наличие в них %%i
А вот в коде реализовать не получается
Вот переписал что-то типа
for /f "tokens=*" %%j in ('dir /b /s /a-d "%%j\%%i"') do (
а как правильно впихнуть ...
Автор: wolf0425
Дата сообщения: 17.08.2009 10:36

Цитата:
только я немогу разобраться с 2>nul
это подавление сообщений о ошибках - когда удалить/создать директорию не удалось
Автор: M1chA
Дата сообщения: 17.08.2009 11:26
Дано:
1)Ноут ген.директора с Windows XP Home SP2 RUS
2)К данному ноуту подключен сетевой принтер HP LaserJet 4200
3)Сетевой принтер HP LaserJet 4200 и другие подобные принтеры подключены к Серверу Терминалов под управлением Windows 2003 server standart.

Сама проблема:

С периодичностью в 1-1,5 часа принтер HP LaserJet 4200 отваливается.
Приходится его подключать заново. При подключении выскакивает соответственно окно запроса логина и пароля.

Решение:

Надо написать скрипт, котрый с периодичностью в 1-1,5 часа переподключал бы данный принтер.
Помогите пожалуйста написать данный батничек,сам никогда не сталкивался с написанием бат-файлов.
Автор: 01MDM
Дата сообщения: 17.08.2009 16:03
anachrom
Поясни, что надо. Чистить в определенных папках из folder.txt или удалять эти папки?

Кстати по поводу 'del /s', ошибка и вылет батника возникает при невозможности удалить файл, т.е все работает до первого "препятcтвия". В других случаях он отрабатывает. Не знаю что это, баг или фича. Опробовал на %TEMP% (где почти всегда есть "занятые" файлы) и на произвольной тестовой папке.
Автор: gale
Дата сообщения: 17.08.2009 16:42
При попытке удалить файл с компакт диска выдаётся сообщение об ошибке "access is denied".
Можно ли как-нибудь скрыть это сообщение?
Автор: 01MDM
Дата сообщения: 17.08.2009 16:52
gale
К примеру autorun.exe на CD

Код:
del F:\autorun.exe 2>nul 1>&2
Автор: gale
Дата сообщения: 17.08.2009 16:58
01MDM
спасибо
Автор: fd1136
Дата сообщения: 17.08.2009 17:20

Цитата:

Код: @echo off
setlocal

for /f "tokens=*" %%i in ('netsh interface ip show config') do call:parse "%%i"
goto:eof

:parse
set "str="
echo "%1"
pause

echo %~1 | 1>nul findstr \".*\" && (
for /f "tokens=3*" %%i in (%1) do echo %%i %%j 1>>file.txt
goto:eof
)

for /f "tokens=2 delims=:" %%i in ('echo %~1 ^| findstr [0-9]') do set "str=%%i"
if not "%str%"=="" echo %str:~1% 1>>file.txt
Автор: 01MDM
Дата сообщения: 17.08.2009 17:51
fd1136
Попробуй такой вариант, вроде должен отработать (хотя я не уверен - не могу протестировать):

Код:
@echo off
setlocal

for /f "tokens=*" %%i in ('netsh interface ip show config') do call:parse %%i
goto:eof

:parse
set "str="
echo %* | 1>nul findstr /v ":" && (
for /f "tokens=3*" %%i in ("%*") do echo %%i %%j 1>>file.txt
goto:eof
)

for /f "tokens=2 delims=:" %%i in ('echo %* ^| findstr [0-9]') do set "str=%%i"
if not "%str%"=="" echo %str:~1% 1>>file.txt
Автор: wolf0425
Дата сообщения: 17.08.2009 23:06
убиваю по taskkill.exe /f /t /im задачу, висящую в трее, перезапускаю ее - вижу в трее второй значок. Как-то можно скомандовать виндам убрать мусор из трея (т.е. не проводя над значками мышкой)?
Автор: 11100
Дата сообщения: 18.08.2009 00:36
Здравствуйте. У меня вопрос.У меня есть папка с музыкой , в ней файлы называются следующим образом 1.mp3, 2.mp3, 3.mp3 и т.д.Еще есть текстовый файл с названиями этих песен и именами исполнителей в формате: Исполнитель - «название песни»
Необходимо переименовать файлы 1.mp3, 2.mp3, 3.mp3 в соответствующие им в текстовом файле . Возможно ли реализовать это через bat файл?
Автор: anachrom
Дата сообщения: 18.08.2009 07:41
01MDM
Чистить в папках из folder.txt файлы по маске из ext.txt
Автор: Serhi84
Дата сообщения: 18.08.2009 09:54

Цитата:
с расширением - правишь первый вариснт 01MDM


Код:
@echo off
setlocal
for /f "tokens=*" %%i in ('dir /b EJ*') do call:rename "%%i"
goto:eof

:rename
set "name=%~n1"
set name
ren %1 "%name:EJ=EL%%date%%~x1"


а как вместо текущей даты сделать дату модификации, то есть с использованием параметра %%~tx? (К примеру, чтобы итоговый файл выглядел так ELxxxx140609). Пробовал по-всякому, в т.ч.


Код:
set "dat=%~t1"
set dat
ren %1 "%name:EJ=EL%%dat:~0,2%%dat:~3,2%%dat:~8,2%%~x1" , но не работает
Автор: 01MDM
Дата сообщения: 18.08.2009 17:13
anachrom
В folder.txt полный путь к папке (без кавычек). Для каждой папки отдельная строка

Код:
@echo off
chcp 1251 1>nul

rd /s /q temp 2>nul
md temp\files 2>nul

for /f "tokens=*" %%i in (folder.txt) do (
pushd "%%i"
for /f %%i in ('type "%~dp0ext.txt"') do (
for /f "tokens=*" %%i in ('dir /b /s /a %%i') do (
echo %%i 1>>"%~dp0temp\del.txt"
move /y "%%i" "%~dp0temp\files"
)
)
popd
)

chcp 866 1>nul
Автор: fd1136
Дата сообщения: 18.08.2009 20:33
01MDM
Последний вариант, предложенный тобой, с некоторыми модификациями заработал!
Спасибо!

Чтобы не мусорить в ветке, не размещаю этот пакетник. Но, если вдруг кому такой файл потребуется - сразу же выложу.

Файл создавал для себя, для быстрой смены настроек TCP/IP под меня тех компов, которые приносят из других сеток (с возможностью вернуть старые настройки "малой кровью").

lan ask - выводит на экран настройки сетевых интерфейсов
lan ask <filename.lan> - то-же, но в файл (и здесь ОГРОМНОЕ спасибо 01MDM, который помог сделать файл пригодным для последующего импорта настроек)
lan set <IP> [<InterfaceName>] - немного личного , дефолтовая настройка под свою сеть (IP - только последний октет)
lan fset <filename.lan> - устанавливает настройки TCP/IP из файла, подготовленного руками или из команды lan ask <filename>
lan clear - сбрасывает настройки TCP/IP в дефолтные Windows
lan - выводит минимальные подсказки
.... - еще что-то, по-моему , уже убегаю, некогда смотреть код ...
Автор: king_stiven
Дата сообщения: 18.08.2009 22:24
Нужна утилитка для монтирования и размонтирования образа диска в виртуальный дисковод из комстроки.
Автор: HaK1R
Дата сообщения: 19.08.2009 02:32
king_stiven
Как с английским, поймешь? А то я не знаю, может ли она монтировать, но создавать может
CDIMAGE 2.52 CD-ROM and DVD-ROM Premastering Utility
Copyright (C) Microsoft, 1993-2000. All rights reserved.
For Microsoft internal use only.

Usage: CDIMAGE [options] sourceroot targetfile

-l volume label, no spaces (e.g. -lMYLABEL)
-t time stamp for all files and directories, no spaces, any delimite
(e.g. -t12/31/2000,15:01:00)
-g encode GMT time for files rather than local time
-h include hidden files and directories
-n allow long filenames (longer than DOS 8.3 names)
-nt allow long filenames, restricted to NT 3.51 compatibility
(-nt and -d cannot be used together)
-d don't force lowercase filenames to uppercase
-c use ANSI filenames versus OEM filenames from source
-j1 encode Joliet Unicode filenames AND generate DOS-compatible 8.3
filenames in the ISO-9660 name space (can be read by either
Joliet systems or conventional ISO-9660 systems, but some of th
filenames in the ISO-9660 name space might be changed to comply
with DOS 8.3 and/or ISO-9660 naming restrictions)
-j2 encode Joliet Unicode filenames without standard ISO-9660 names
(requires a Joliet operating system to read files from the CD)
When using the -j1 or -j2 options, the -n, -nt, and -d options
do not apply and cannot be used.
-js non-Joliet "readme.txt" file for images encoded with -j2 option
(e.g. -jsc:\location\readme.txt). This file will be visible as
the only file in the root directory of the disc on systems that
do not support the Joliet format (Windows 3.1, NT 3.x, etc).
-u1 encode "UDF-Bridge" media
-u2 encode "UDF" file system without a mirror ISO-9660 file system
(requires a UDF capable operating system to read the files)
-ur non-UDF "readme.txt" file for images encoded with -u2 option
(e.g. -usc:\location\readme.txt). This file will be visible as
the only file in the root directory of the disc on systems that
do not support the UDF format.
-us sparse UDF files
-ue embed file data in UDF extent entry
-uf embed UDF FID entries
-uv UDF Video Zone compatibility enforced
-b "El Torito" boot sector file, no spaces
(e.g. -bc:\location\cdboot.bin)
-p Platform ID for the "El Torito" boot catalog
-e Do not set floppy emulation mode in El Torito boot catalog
-s sign image file with digital signature (no spaces, provide RPC
server and endpoint name like -sServerName:EndPointName)
-x compute and encode "AutoCRC" values in image
-o optimize storage by encoding duplicate files only once
-oc slower duplicate file detection using binary comparisons rather
than MD5 hash values
-oi ignore diamond compression timestamps when comparing files
-os show duplicate files while creating image
(-o options can be combined like -ocis)
-w warning level followed by number (e.g. -w4)
1 report non-ISO or non-Joliet compliant filenames or depth
2 report non-DOS compliant filenames
3 report zero-length files
4 report each file name copied to image
-y test option followed by number (e.g. -y1), used to generate
non-standard variations of ISO-9660 for testing purposes:
1 encode trailing version number ';1' on filenames (7.5.1)
2 round directory sizes to multiples of 2K (6.8.1.3)
5 write \i386 directory files first, in reverse sort order
6 allow directory records to be exactly aligned at ends of sector
(ISO-9660 6.8.1.1 conformant but breaks MSCDEX)
7 warn about generated shortnames for 16-bit apps under NT 4.0
b blocksize 512 bytes rather than 2048 bytes
d suppress warning for non-identical files with same initial 64K
l UDF - long ads used in file entries instead of short ads
r UDF - number of ad's is random
w open source files with write sharing
t load segment in hex for El Torito boot image (e.g. -yt7C0)
f use a faster way to generate short names
-k (keep) create image even if fail to open some of the source files
-m ignore maximum image size of 681,984,000 bytes
-a allocation summary shows file and directory sizes
-q scan source files only, don't create an image file

NOTE: Many of these options allow you to create CD images
that are NOT compliant with ISO-9660 and may also
NOT be compatibile with one or more operating systems.
If you want strict ISO and DOS compliance, use the -w2
Автор: igor_andreev
Дата сообщения: 19.08.2009 05:49
king_stiven
filedisk попробуй
http://www.acc.umu.se/~bosse/

Я им одно время пользовался вместе с wdl.exe кажется от этого автора, но чего-то на сайте не нашел эту утилиту, на рапиду положу
http://rapidshare.com/files/268967013/wdl.zip (~13 Kb)

Это чтобы не устанавливать рег-файлом драйвер filedisk, а загружать только когда он нужен.
Загрузить: wdl /l filedisk.sys
Выгрузить: wdl /u filedisk.sys
Автор: king_stiven
Дата сообщения: 19.08.2009 07:41
igor_andreev
Спасибо, если можно положить на http://zalil.ru/ .
HaK1R
CDIMAGE вроде не монтирует.
Автор: PetrK
Дата сообщения: 19.08.2009 15:20
в bat файле пишу "net share c$ /delete" и ставлю в автозагрузку. При запуске ОС в окне cmd.exe пишется:
"Не запущена служба сервера.

Для вызова дополнительной справки наберите NET HELPMSG 2114."

Что написать в начале bat файла что бы выполнение оставшейся части bat файла происходило только после запуска службы сервера?
Автор: gale
Дата сообщения: 19.08.2009 15:53
example.bat:
@echo off
if "%1"=="" goto label
echo yes
goto :eof
:label
echo no
goto :eof
Хочется, чтобы проверка работала без ошибок при любом значении переменной %1.
Запускаю example "a" - всё хорошо работает.
Запускаю example "a - появляется сообщение об ошибке:
the syntax of the command is incorrect.
Автор: wolf0425
Дата сообщения: 19.08.2009 16:04
01MDM

Цитата:
set "date=%2"
set "date=%date:2009=09%"

ну кто так пишет? думаешь кроме 2009 никаких других года у дат не бывает?
set "date=%date:.=%"
set "date=%date:~0,4%%date:~-2%"

а вообще полезнее иметь в имени дату в виде 20090819 - чтоб сортировка по имени файла совпадала с сортировкой по дате.
set "date=%date:~-4%%date:~3,2%%date:~0,2%"

Автор: 01MDM
Дата сообщения: 19.08.2009 17:21
wolf0425
О завтра не думаю, о вчера не вспоминаю Живу текущим..
Спасибо за внимательность. Хоть кто-то видит чужие ляпы.

Добавлено:
gale

Попробуй так:

Код:
@echo off
setlocal

set "args=%1"

if not defined args goto:label
echo %1
goto:eof

:label
echo no

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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