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

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

Автор: king_stiven
Дата сообщения: 11.11.2007 18:31
Tipulatoid
это на примере одной строчки из rasphone.pbk


Код: chcp 1251 > nul
for /f "usebackq tokens=*" %%c in ("rasphone.pbk") do set p=%%c
chcp 866 > nul
echo %p%
Автор: BlackCerber
Дата сообщения: 11.11.2007 23:11
Подскажите как с помощью батника расшарить диски на полный доступ "гостям" из сети.
Автор: Tipulatoid
Дата сообщения: 12.11.2007 00:00
king_stiven
Не работает В том файле кодировка не 866 и не 1251, а какая-то непонятная, Unicode, наверное

Добавлено:
BlackCerber

Цитата:
Подскажите как с помощью батника расшарить диски на полный доступ "гостям" из сети.

net share /?
Автор: KapralBel
Дата сообщения: 12.11.2007 06:47
Tipulatoid
Кодировка UTF-8
Автор: king_stiven
Дата сообщения: 12.11.2007 06:48
Tipulatoid
Я испытывал на файле с кодировкой 1251, соответственно в примере измени
chcp 1251 > nul на нужную кодировку. В примере в rasphone.pbk только одна строка.
Автор: Lutvun
Дата сообщения: 12.11.2007 07:46
Всем спасибо за помощь с %date%!!!!! Есть ищё одна задачька на этот раз посложней: Есть две папки "OK" и "incomplete", в каждой из этих папок есть много подпапок в которых есть файлы разных форматов с именами типа таких basslovers_united_vid.rar~80.239.159.9_3179_3754.avi.rar и таких ~80.239.159.9_3179_3754.avi.rar. Нужно чтоб батник проверял все папки на наличие файлов и переименовывал файлы с именем оставляя в них только то, что находитса перед тыльдой, а файлы без имени которые начинаютса с тыльды перемещял в подпапку "noname" и удалял тыльду.
П.С. Может есть какойто символ который может использоватса в именах, но не встречяетса на практике, чтоб заменить тыльду им.
Автор: king_stiven
Дата сообщения: 12.11.2007 08:15
разбери командой for имя файла как строчку
for /f "tokens=1,2 delims=~" %%e in ("имя файла") do echo %%e%%f
проверь на наличие %%f, ну и так далее
Автор: Lutvun
Дата сообщения: 12.11.2007 08:43
king_stiven
Если бы мне это чтонибудь говорило...
Автор: king_stiven
Дата сообщения: 12.11.2007 09:05
Lutvun
Сходи в шапку, сделай себе справку по всем командам.

Цитата:
Создание помощи по всем командам консоли 2000 и XP

Внимательно прочитай справку по команде for
По крайней мере сунь имена файлов в мой пример и посмотри на результат.
delims=~ значит разделителем в строке считается тильда

tokens=1,2 значит под переменной %%e будет считаться 1 часть имени файла
под переменной %%f будет считаться 2 часть имени файла


Автор: CriticalError
Дата сообщения: 12.11.2007 12:19
Подскажите, пожалуйста, как прописать в logon-скрипте юзера загрузку двух приложений так, чтобы второе не начинало загружаться прежде, чем загрузится первое. Желательно это сделать средствами командной строки, без использования JS и VB.
Автор: Maza Faka
Дата сообщения: 12.11.2007 13:01
CriticalError

Код:
start /wait program1.exe
start /wait program2.exe
Автор: Tipulatoid
Дата сообщения: 12.11.2007 13:05
CriticalError

Цитата:
Подскажите, пожалуйста, как прописать в logon-скрипте юзера загрузку двух приложений так, чтобы второе не начинало загружаться прежде, чем загрузится первое.


Код: @echo off
start /b "" "c:\program files\microsoft office\office10\excel.exe"
:again
tasklist | find /i "excel.exe" >nul || goto again
start /b "" "c:\program files\microsoft office\office10\winword.exe"
Автор: soulthiefer
Дата сообщения: 12.11.2007 13:42
помогите плз с батником !!! нужен батник который записывает в биос время на просыпание компьютера на 5 мин большее чем системное время и выключал бы комп . а он по идее загружался бы сам через 5 мин ! оч нужно кто знает пожалуйста помогите!
Автор: Tipulatoid
Дата сообщения: 12.11.2007 14:38
Никто не поможет с батником - перекодировщиком из UTF-8 в ANSI? Судя по этому посту такое возможно. Только знаний у меня не хватает.
[more]сам батник мне видется таким:

Код: @echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=[]" %%a in (utf.txt) do (
set stroka=%%a
set stroka=!stroka: =a!
set stroka=!stroka: =б!
set stroka=!stroka: =в!
set stroka=!stroka: =г!
set stroka=!stroka: =д!
set stroka=!stroka: =е!
set stroka=!stroka: =ё!
set stroka=!stroka: =ж!
set stroka=!stroka: =з!
set stroka=!stroka: =и!
set stroka=!stroka: =й!
set stroka=!stroka: =к!
set stroka=!stroka: =л!
set stroka=!stroka: =м!
set stroka=!stroka: =н!
set stroka=!stroka: =о!
set stroka=!stroka: =п!
set stroka=!stroka: =р!
set stroka=!stroka: =с!
set stroka=!stroka: =т!
set stroka=!stroka: =у!
set stroka=!stroka: =ф!
set stroka=!stroka: =х!
set stroka=!stroka: =ц!
set stroka=!stroka: =ч!
set stroka=!stroka: =ш!
set stroka=!stroka: =щ!
set stroka=!stroka: =ъ!
set stroka=!stroka: =ы!
set stroka=!stroka: =ь!
set stroka=!stroka: =э!
set stroka=!stroka: =ю!
set stroka=!stroka: =я!
set stroka=!stroka: =А!
set stroka=!stroka: =Б!
set stroka=!stroka: =В!
set stroka=!stroka: =Г!
set stroka=!stroka: =Д!
set stroka=!stroka: =Е!
set stroka=!stroka: =Ё!
set stroka=!stroka: =Ж!
set stroka=!stroka: =З!
set stroka=!stroka: =И!
set stroka=!stroka: =Й!
set stroka=!stroka: =К!
set stroka=!stroka: =Л!
set stroka=!stroka: =М!
set stroka=!stroka: =Н!
set stroka=!stroka: =О!
set stroka=!stroka: =П!
set stroka=!stroka: =Р!
set stroka=!stroka: =С!
set stroka=!stroka: =Т!
set stroka=!stroka: =У!
set stroka=!stroka: =Ф!
set stroka=!stroka: =Х!
set stroka=!stroka: =Ц!
set stroka=!stroka: =Ч!
set stroka=!stroka: =Ш!
set stroka=!stroka: =Щ!
set stroka=!stroka: =Ъ!
set stroka=!stroka: =Ы!
set stroka=!stroka: =Ь!
set stroka=!stroka: =Э!
set stroka=!stroka: =Ю!
set stroka=!stroka: =Я!
echo !stroka!>>ansi.txt
)
Автор: CriticalError
Дата сообщения: 12.11.2007 15:19
Tipulatoid

Цитата:
Используется утилита tasklist.exe Насколько зняю, ее по умолчанию нет в Win XP Home Edition. Тогда надо ее скопировать с Prof. Edition и кинуть в папку %windir%\system32


Большое спасибо, это работает на обычном ХР проф. Но когда я попытался запустить tasklist на XP Embedded, оказалось, что его там нет. Я скопировал tasklist.exe и еще dbghelp.dll, которую он требовал, но, тем не менее, при попытке выполнения tasklist.exe система пишет "ERROR: Provider load failure"

Чего может не хватать системе для запуска tasklist?
Автор: Tipulatoid
Дата сообщения: 12.11.2007 15:56

Цитата:
Чего может не хватать системе для запуска tasklist?

Понятия не имею - никогда с этой осью дел не имел. Если хорошо с английским, почитай тут
Автор: Lqwait
Дата сообщения: 12.11.2007 15:56
Господа! Вот такой вопрос. Для проведения инвентаризации я сделал батник, который выполняет на удалённой машине код, с помощью которого мне на комп падает файл с конфой удалённой машины. Файл называется именем компа. Можно ли написать батник, который бы пинговал сеть от 1-го до 255 айпишника, и, если машина пингуется, тогда сопоставлял её имя и имена файлов в папке? Если такого файла нет - тогда программа запускает код для создания этого файла. И потом дальше. И так до 255. Если есть - тогда переходит к следующему айпишнику. Что-то я провозился и ничего путного не получилось... Заранее благодарю!
Автор: Maza Faka
Дата сообщения: 12.11.2007 16:54
Lqwait
Пример:

Код:
@echo off

for /l %%a in (1,1,255) do (
ping -n 1 -w 1000 192.168.0.%%a>nul && Call :findFile %%a
)
goto :eof

:findFile
rem Здесь рекурсивно ищем файл в каталоге c:\temp удалённой машины
dir \\192.168.0.%~1\c\temp\%~1 /b /s> nul || Call :CreateFile %~1
rem И если файл не найден, то вызываем "процедуру" :createFile
goto :eof

:createFile
rem Здесь выполняем команды для создания файла
::.......
Автор: Tipulatoid
Дата сообщения: 12.11.2007 17:00
Lqwait
Пусть в файле ip.txt записаны все ip-шники и имена компов в формате:

Код:
127.0.0.1=Comp1
127.0.0.2=Comp2
127.0.0.3=Comp3
....
....
127.0.0.254=Comp254
127.0.0.255=Comp255
Автор: 01MDM
Дата сообщения: 12.11.2007 17:16
Tipulatoid
Тут вопрос в том что надо узнать имя машины по ip. Как я понял. Надо использовать net view, имхо.
А.. не заметил про файл ip=name
Автор: NIKZZZZ
Дата сообщения: 12.11.2007 18:21
Простой вопросик, как распознать картинку в FineReader 9 ?
В восьмерке :
"%ProgramFiles%\ABBYY FineReader 8.0 Professional Edition\fineocr.exe" "%image.jpg" /lang English /send clipboard
Автор: Cyril Konst
Дата сообщения: 12.11.2007 21:26

Цитата:
Будем считать, что путь к аккаунтам пользователей стандартный: "c:\documents and settings", если нет, то измени путь на нужный тебе. Архивы создаются в директории откуда был запущен батник. Используется консольная версия архиватора 7zip, скопируй её в папку Windows.

Код:
@echo off
for /f "delims=" %%a in (
'dir "c:\documents and settings" /b /s /a:d ^| find /v /i "\Default" ^| findstr "документы$"') do (
for /f "delims=\ tokens=3" %%b in ("%%a") do 7z.exe a -t7z "%%~nxb".7z "%%a"
)


Здесь создаются файлы с именем юзера каждый.
А как переделать, чтобы создавался один файл (doc.7z), в котором бы были подкаталоги с именами юзеров?
Автор: Tipulatoid
Дата сообщения: 12.11.2007 23:10
Lutvun

Цитата:
Есть две папки "OK" и "incomplete", в каждой из этих папок есть много подпапок в которых есть файлы разных форматов с именами типа таких basslovers_united_vid.rar~80.239.159.9_3179_3754.avi.rar и таких ~80.239.159.9_3179_3754.avi.rar. Нужно чтоб батник проверял все папки на наличие файлов и переименовывал файлы с именем оставляя в них только то, что находитса перед тыльдой, а файлы без имени которые начинаютса с тыльды перемещял в подпапку "noname" и удалял тыльду.


Код: @echo off
setlocal enabledelayedexpansion

call :rename "c:\auto 3\delme222\OK"
call :rename "c:\auto 3\delme222\incomplete"
goto :eof

:rename
pushd %~1

for /r %%a in (*) do (
set full_path_to_file=%%a
set path_to_file=%%~dpa
set filename=%%~nxa
for /f "tokens=1,2 delims=~" %%a in ('echo !filename!') do (
set first_part_name=
set second_part_name=
set first_part_name=%%a
set second_part_name=%%b
if defined second_part_name (
ren "!full_path_to_file!" !first_part_name!
) else (
ren "!full_path_to_file!" !first_part_name!
if not exist noname\ mkdir noname\
move "!path_to_file!\!first_part_name!" noname\
)
)
)

popd
goto :eof
Автор: Lutvun
Дата сообщения: 13.11.2007 00:43
Tipulatoid
Круто, но папка noname создаётса в корне(тоесть в папке ок) а должна создаватса в каждой с подпапок и файлы с даной подпапки должны перемещяса в подпапку даной подпапки(noname). Пример: V:\Test\ok\avi.rar\~2.avi.rar должен переместитса в V:\Test\ok\avi.rar\noname с именем 2.avi.rar.
П.С. Не даст ли даный способ збой если в имене попадётса пробел или будет много символов?
Автор: king_stiven
Дата сообщения: 13.11.2007 00:51
Tipulatoid
ещё вариант, набросал без проверки, обязательно нужно отладить ключи, но в принципе должно работать.

Код: @ECHO OFF
call :rename "c:\auto 3\delme222\OK"
call :rename "c:\auto 3\delme222\incomplete"
goto :eof

:rename
for /f "usebackq tokens=*" %%a in (`dir %1 /b /s /a:-d`) do (
for /f "tokens=1,2 delims=~" %%b in ("%%~nxa") do (
ren "%%a" "%%b"
if "%%c"=="" (
if not exist "%%~dpa\noname" mkdir "%%~dpanoname"
move "%%~dpa%%b" "%%~dpanoname"
)
)
)
Автор: Tipulatoid
Дата сообщения: 13.11.2007 03:56
Lutvun
Вариант king_stiven получше будет, т.к. он без setlocal enabledelayedexpansion и значит, не будет проблем с воскл. знакми в именах файлов. Папку noname он делает как тебе надо.
Проблем с пробелами не будет, т.к. все что надо, в кавычках. Короче говоря, юзай этот код.
all
Кто-нибудь что-нибудь мне может сказать по поводу этого поста. Просто, коммментарий, во 1-первых, возможно ли в принципе, и, если да, как правильно прописывать коды и где их вообще можно посмотреть.
Автор: Lqwait
Дата сообщения: 13.11.2007 04:55
Maza Faka, Tipulatoid, 01MDM! Большое спасибо за участие! Буду разбираться! Никогда и не догадывался, что простой батник - может быть таким сложным...
Автор: 01MDM
Дата сообщения: 13.11.2007 08:35
Захотелось выяснить по дате день недели.
Вот что получилось

Код:
::
:: weekday.cmd
:: Без проверки на валидность введенной даты
::
@echo off
setlocal

set /p date="Date: "
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%

:: Проверка 08-09 без отрицательных лет
if %d:~0,1%==0 set /a d=0x%d%
if %m:~0,1%==0 set /a m=0x%m%
if %y:~0,1%==0 set y=%y:~1,3%
if %y:~0,2%==00 set y=%y:~2,2%
if %y:~0,3%==000 set /a y=0x%y%

:: Срез календаря
set cury=%y%
if %y% gtr 2028 (for /l %%i in (%y%,-28,2001) do set cury=%%i)
if %y% lss 2001 (for /l %%i in (%y%,28,2028) do set cury=%%i)
set cury=%cury:~2,2%
if %cury:~0,1%==0 set /a cury=0x%cury%

:: Текущий день в срезе календаря
set /a l=y%%4
set "nd=31 59 90 120 151 181 212 243 273 304 334"
if %l%==0 set "nd=31 60 91 121 152 182 213 244 274 305 335"
set /a tok=m-1
if not %tok%==0 for /f "tokens=%tok%" %%i in ("%nd%") do set /a dy=d+%%i
if %m%==1 set dy=%d%
set /a ind=(dy+(cury-1)*365+(cury-1)/4)%%7

:: День недели
if %ind%==0 set dow=Sun
if %ind%==1 set dow=Mon
if %ind%==2 set dow=Tue
if %ind%==3 set dow=Wed
if %ind%==4 set dow=Thu
if %ind%==5 set dow=Fri
if %ind%==6 set dow=Sat
echo is %dow%
Автор: soulthiefer
Дата сообщения: 13.11.2007 08:42
неужели никто не знает!(
помогите плз с батником !!! нужен батник который записывает в биос время на просыпание компьютера на 5 мин большее чем системное время и выключал бы комп . а он по идее загружался бы сам через 5 мин ! оч нужно кто знает пожалуйста помогите!
Автор: Lutvun
Дата сообщения: 13.11.2007 08:49
king_stiven, Tipulatoid
Спасибо огромное, всё работает, но если первый раз запускаеш батник, он всё делает правильно, и создаёт этот avi.rar\noname, а если запустить второй раз, то он опять перемещяет файлы с avi.rar\noname в avi.rar\noname\noname. Нужно какуюнибудь проверку вставить. Также хрошо бы если в имени файла нету "~" чтоб он ево не трогал.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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