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

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

Автор: VladimirKvach
Дата сообщения: 09.11.2006 10:37
Если же сервер на удаленном филиале и надо оттуда слать письмо о заканчивающемся свободном месте, то опять таки лучше чем blat ничего не придумано.

В батнике:

freedisk .....
if %errorlevel%==1 blat .....
Автор: Levitant
Дата сообщения: 09.11.2006 14:20
У меня 2 вопроса. Как сделать, что бы при копированию с дискеты не надо было вписывать диск, а использовался бы текущий диск там, где находится сам бат фаил.

И напишите пожалуйста если не сложно как можно найти в файле opera6.ini определенный текс (цифру 2456) и заменить её на 3333.
За ранее благодраю.
Автор: Maza Faka
Дата сообщения: 09.11.2006 15:13
Как при помощи батника удалить все папки с вложенными подпапками и имеющимися в них файлами, если имена папок неизвестны, пример: нужно удалить все папки и файлы из D:\Temp и при этом не удалить папку Temp
Автор: ipmanyak
Дата сообщения: 09.11.2006 15:15
Levitant тут все найдешь - http://www.batchfiles.co.nr/


Автор: Levitant
Дата сообщения: 09.11.2006 15:22
Maza Faka, del "C:\Documents and Settings\%USERNAME%\Local Settings\Temp" /f /s /q



Там сайт на английском.
А тут как-нибудь нельзя. Напишите пожалуйста код
Автор: levkadub
Дата сообщения: 09.11.2006 15:47
поскажите как реализовать такое

есть файл содержащий текст вида:
share$ c: \share расшаренная папка



строк в файле около 100
надо сделать так
md e:\"share"
net share "share"=e:\"share"
xcopy \\server\"share"\*.* \\fileserver\"share" /s /e /c /h /o /y

т.е. создать папку расшарить ее и скопировать в нее файлы

а в качестве переменной "share" использовать имя папки из текстового файла.

Автор: tolyn77
Дата сообщения: 09.11.2006 15:58
подскажите как из бат файла шрифт подключить в системе!?
Автор: ipmanyak
Дата сообщения: 09.11.2006 16:07
Maza Faka
1 - удалить сам каталог и потом создать его снова
RMDIR /S /Q D:TEMP
MKDIR D:\TEMP
2 - один из вариантов, наверняка есть другие и возможно красивее
ECHO ON
DIR /B D:\TEMP > %temp%.\myfile.txt
TYPE %temp%.\myfile.txt
FOR /F %%I in (%temp%.\myfile.txt) do DEL D:\TEMP\%%I /S /Q;
DIR /B D:\TEMP > %temp%.\myfile.txt
FOR /F %%I in (%temp%.\myfile.txt) do RD D:\TEMP\%%I /S /Q;
del %temp%.\myfile.txt








Добавлено:
Levitant ну и что что по аглицки - смотри меню
09. Get CD (Current Directory) into a variable это получить текущий каталог в переменную
и 19. Replace a string on a file automatically замена строки в файле


Добавлено:
даже тупо посмотреть все скрипты и то поймешь что и как и зачем .
Автор: ViSiToR
Дата сообщения: 09.11.2006 17:04
Levitant


Цитата:
как можно найти в файле opera6.ini определенный текс (цифру 2456) и заменить её на 3333.

Просто интересно, для какой цели?
Автор: Maza Faka
Дата сообщения: 09.11.2006 17:35
Пасибо за пример!
Автор: Levitant
Дата сообщения: 09.11.2006 17:37
ViSiToR, у нас в сетки 2 инета порт 3333 спутник 2456 выделинка, на эксплоер меняется ключ в реестре, а опера в конфиге все хронит. Что бы в свойства постоянно не лазить.

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


COPY opera63333.ini C:\"Documents and Settings"\%USERNAME%\"Application Data"\Opera\Opera\profile\opera6.ini

Вот вместо С надо указать переменные, например если ситема на д лежит.
сам БАтник лежит в ......Opera\profile\for_opera
Автор: ViSiToR
Дата сообщения: 09.11.2006 18:57
Levitant

Я уже не помню, можно как то просто узнать текущий диск батника, но вот способ обходной:


Код: Copy "opera63333.ini" "%cd:~0,3%\Documents and Settings\%USERNAME%\Application Data\Opera\Opera\profile\opera6.ini
Автор: Elroir
Дата сообщения: 09.11.2006 19:29
Maza Faka

Цитата:
удалить все папки с вложенными подпапками...

Зачем заново изобретать велосипед?
На 83-ей странице обсуждался точно такой же вопрос.
В предпоследнем посте на этой странице было дано простое решение.

Добавлено:
levkadub
Непонятно, где что. Сколько столбцов в файле - 2 или 3?
Приведи еще пример и используй какие-нибудь слова кроме "share".
Автор: Levitant
Дата сообщения: 10.11.2006 07:15

Цитата:
Levitant ну и что что по аглицки - смотри меню
09. Get CD (Current Directory) into a variable это получить текущий каталог в переменную
и 19. Replace a string on a file automatically замена строки в файле


Я в БАТниках совсем не шарю. Вот по ссылки код добавления переменной

Код: @echo off
echo.exit|%comspec%/Kprompt set CD=$P$_|FIND " " > %temp%.\t1.bat
for %%? in (call del) do %%? %temp%.\t1.bat
echo CD=%CD%
Автор: ViSiToR
Дата сообщения: 10.11.2006 08:25
Levitant

Цитата:
Вот это работает

Если не трудно, подскажи как заставить работать? сколько не пытаюсь, не получается.
Автор: cluster
Дата сообщения: 10.11.2006 08:25
Ребят, подскажите, как сделать запись в лог файлов, которые не копируются (xcopy), скажем, нет доступа или повреждён.
И дайте, плз, линк на описание errorlevel'ов
Автор: Levitant
Дата сообщения: 10.11.2006 09:21
ViSiToR. Хм, я просто вставил в батник этот код
Вместо Old String написал что хочу заменить, вместо New String, написал на что хочу заменить строку.
Файлы начальный и конечный должны быть РАЗНЫЕ. Путь хоть какой ОБЯЗАТЕЛЬНО в кавычки.
А вообще если хош редактировать фаил там же, где и батник, то пути писать не надо


infile в каком искать
outfile куда переписывать с новой строчкой

Получилось у меня так

Код:
@echo off
:: Create the assembler program, by Herbert Kleebauer
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> %temp%.\sbs2.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> %temp%.\sbs2.com
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> %temp%.\sbs2.com
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> %temp%.\sbs2.com
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> %temp%.\sbs2.com
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> %temp%.\sbs2.com
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> %temp%.\sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> %temp%.\sbs2.com
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> %temp%.\sbs2.com
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> %temp%.\sbs2.com
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> %temp%.\sbs2.com
:: Use the program
%temp%.\sbs2.com 0 "2456" "3333" < "%appdata%\Opera\Opera\profile\opera6.ini" > "%appdata%\Opera\Opera\profile\for_opera\opera63333.ini"
:: Delete the program
del %temp%.\sbs2.com


Автор: ViSiToR
Дата сообщения: 10.11.2006 09:35
Levitant

Цитата:
ОБЯЗАТЕЛЬНО в кавычки.

Вот наверно из за того что кавычки не постаил в пути

cluster

Цитата:
дайте, плз, линк на описание errorlevel'ов

Я как это проводил иследование этого списка ...


Цитата:
Я решил провести одно иследование, в результате которого, нужно было выяснить, после какой команды будет проверяться errorlevel, а после какой не будет.
Вобщем результаты, показали что практический после всех команд (известных мне), проверяется уровень ошибочности (errorlevel) предыдущей команды. И если errorlevel равен нулю (0), то выводится сообщение: ok!, а если равен единице (1), то, навернное, ничего не будет выведенно.

Я прописал в батнике, наиболее используемые команды, и после каждой из них, поставил строчку для проверки errorlevel.


[more=Состав этого батника:]@echo off
xcopy *.* folder\*.*
if errorlevel 0 echo ok!
pause
copy /y *.* folder\*.*
if errorlevel 0 echo ok!
pause
pause
echo check!
if errorlevel 0 echo ok!
pause
pause
cd > Test.txt
if errorlevel 0 echo ok!
pause
pause
echo Test! > Test.txt
if errorlevel 0 echo ok!
pause
pause
for %%I in (Test.txt) do echo %%I
if errorlevel 0 echo ok!
pause
pause
for /f %%I in (Test.txt) do if /i not exist %%I echo %%I
if errorlevel 0 echo ok!
pause
pause
start /b Test.txt
if errorlevel 0 echo ok!
pause
pause
del Test.txt
if errorlevel 0 echo ok!
pause
pause
md Test
if errorlevel 0 echo ok!
pause
pause
rmdir Test
if errorlevel 0 echo ok!
pause
pause
if not exist Tralyalya echo Test
if errorlevel 0 echo ok!
pause
pause
echo echo Test Bat ^& pause > Test_Bat.bat
if errorlevel 0 echo ok!
pause
pause
call Test_Bat.bat
if errorlevel 0 echo ok!
pause
pause
move Test_Bat.bat folder\Test_Bat.bat
if errorlevel 0 echo ok!
pause
pause[/more]


Цитата:
-А вот что вывелось на экран, после его (батника) запуска (это результат после того, как я понажимал все паузы которые были выведенный на экран, за исключением последней):
P.S: тут, в тексте подробной ссылки, прописана строчка красным цветом, она указывает на запуск текст-файла!


[more=Вывод на экран]C:7-zip.chm
C:7z.exe
C:copying.txt
C:readme.txt
C:Command for 7z all files.bat
C:BATHiK.bat
Скопировано файлов: 6.
ok!
Для продолжения нажмите любую клавишу . . .
7-zip.chm
7z.exe
copying.txt
readme.txt
Command for 7z all files.bat
BATHiK.bat
Скопировано файлов: 6.
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
check!
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
Test.txt
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
Test!
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
Тут запустился текстовый файл, с таким содержанием: Test!
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
Test
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
Test Bat
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .
ok!
Для продолжения нажмите любую клавишу . . .
Для продолжения нажмите любую клавишу . . .[/more]


Цитата:
Я ставил по две паузы после каждой команды if errorlevel 0 echo ok! для того, чтобы на случай если первая не сработает (у меня всегда первая не срабатывала в этом батнике - ну, кроме самой первой, та что в самом начале этого батника, т.к перед ней нет других команд pause), то вторая сработает точно!


Добавлено:
ViSiToR

Цитата:
наверно из за того что кавычки не постаил в пути

Оказалось что и это не помогло - кто то ещё пробовал этот способ, у кого он ещё работает? что ещё нужно учитывать?
Автор: Kirillhome
Дата сообщения: 10.11.2006 14:00
ViSiToR
Что не работает? sb2.com?
У меня, похоже, работает...
Обязательно - строка поиска и строка замены - в кавычках!
Автор: Maza Faka
Дата сообщения: 10.11.2006 15:31
Нужно скопировать файл в папку с вложеными подпапками, имена подпапок неизвестны, пример: копируемый файл D:\Install\Config.cfg нужно скопировать в D:\Program\"2-3 папки с неизвестным именем", файл нужно скопировать только в подпапки, имя которых неизвестно, то есть они появляются при запуске программы и пользователь сам задаёт им имя!
Автор: Kirillhome
Дата сообщения: 10.11.2006 16:16
Maza Faka

Смотреть в эту сторону:
set /p FolderName="Введите имя папки"
Автор: cluster
Дата сообщения: 10.11.2006 16:44
ViSiToR
на сколько я знаю, эррорлевелов гораздо больше, чем два..
Автор: sD31337
Дата сообщения: 10.11.2006 20:41
првиет всем , я недавно писал как прописать команду net share 123=C:\ в риестор чтобы после перезапуска она все время запускалась а подскажите плиз как мне октрыть общий доступ к другому диску напимер к D я пробовал сделать все тоже самое только вместо C писал D ничего не получилось и еще как удалить то что я хочу прописать в риестор ) спасибо

вот эта строка //////////////////////////////////////////////////////////////////////////////

Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "NetShare" /t "REG_SZ" /d "%windir%\system32\cmd.exe net share plzopenC=c:\\"
--- я делал так Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "NetShare" /t "REG_SZ" /d "%windir%\system32\cmd.exe net share plzopenC=c:\\" --- вместо С ставил D , напишите если не трудно как октрыть досуп к D и как убрать из автозагрузки эту строку спасибо
Автор: Elroir
Дата сообщения: 10.11.2006 21:04
cluster
Сборника errorlevel-ов я нигде не встречал. Иногда при описании команды (на сайте Microsoft в частности) дается список для этой команды. Например, для xcopy
0 - Files were copied without error.
1 - No files were found to copy.
2 - The user pressed CTRL+C to terminate xcopy.
4 - Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.
5 - Disk write error occurred.


Добавлено:
sD31337
Добавить в автозагрузку "расшаривание" дисков C: и D:

Код:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "NetShareC" /t
/d "%windir%\system32\cmd.exe /c net s hare plzopenC=c:\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /f /v "NetShareD" /t
/d "%windir%\system32\cmd.exe /c net s hare plzopenD=d:\\"
Автор: Smitis
Дата сообщения: 10.11.2006 22:25
Maza Faka

Цитата:
Как при помощи батника удалить все папки с вложенными подпапками и имеющимися в них файлами, если имена папок неизвестны, пример: нужно удалить все папки и файлы из D:\Temp и при этом не удалить папку Temp

Ну блин... Сколько можно одно и то же разбирать. FAQ, что-ли какой сделать?
Вот наиболее оптимальный вариант:

Код:
cd /d folder
rd /s /q folder
Автор: ViSiToR
Дата сообщения: 10.11.2006 22:53
Kirillhome

Цитата:
Что не работает?

Вобще то ничего не срабатывает, просто на пару секунд запускается окно ком. строки, и всё. Всё в кавычках, но файл создаётся (выходной), и он оказывается пустым. Может это не на любой системе работает (т.е может есть какие то ограниения), всё таки как я понял, это прорграмма на ассемблере.

cluster
Цитата:
эррорлевелов гораздо больше, чем два.

Я знаю, я просто проверял возвращается ли вообще код ошибочности той или иной команда, и это было давно .



Добавлено:
Smitis

Цитата:
У тебя в батнике грубая ошибка:

И наверно не одна, как я уже написал...


Цитата:
и это было давно .


Я тогда ещё слабо понимал что такое errorlevel (если вообще).
Автор: Kirillhome
Дата сообщения: 11.11.2006 00:00
ViSiToR

Цитата:
Вобще то ничего не срабатывает, просто на пару секунд запускается окно ком. строки, и всё. Всё в кавычках, но файл создаётся (выходной), и он оказывается пустым. Может это не на любой системе работает (т.е может есть какие то ограниения), всё таки как я понял, это прорграмма на ассемблере.

Операционка - Win XP SP2 Rus
Пустой файл у меня получается, если параметры замены передавать без кавычек.
Или - если опустить первый параметр (в данном примере - 0), который, как я понял, обозначает порядковый номер заменяемого фрагмента (т.е. 0 - всюду, 1 - первое вхождение и т.д.)
Автор: Elroir
Дата сообщения: 11.11.2006 00:01
Smitis

Цитата:
для правильной проверки errorlevel таких программ, код нужно предварительно установить (обнулить)

Если программа не возвращает при завершении числовое значение, обнуляй - не обнуляй, ничего не даст. Errorlevel не изменится.
Автор: ViSiToR
Дата сообщения: 11.11.2006 00:31
Kirillhome

Операционка у меня таже. Может играет роль файловая система? у меня Fat32. Ничего не пойму, как ни пытался, я даже создал сначало этот файл (sb2.com), а потом отдельным батником пытался его запускать, но создаётся всегда пустой файл (в котором должен быть результат). Я всё помещал в кавычки, везде писал полные пути, изменял текущий каталог, изменял расширения файла (думал может это только для инишек), пробовал разные параметры замены (русские символы), пробовал разные регистры (а вдруг к регистру чувствителен процесс замены), но ничего из этого не помогло...
Я очень давно хотел найти способ заменять вхождения в обычном файле, используя именно батник (почти только батник), и вот оно нашлось, но как назло, не могу заставить его (этот способ) работать
Автор: Kirillhome
Дата сообщения: 11.11.2006 01:26
ViSiToR
Проверил под FAT-32 (правда, в Win'98) - тоже работает....
На всякий случай выложил создающий bat-файл и отдельно sb2.com (в одном рахиве) на Slil.Ru

Добавлено:
Да, ещё проверил - программа замены (sb2.com) - регистрозависимая! (что для русского, что для английского языка)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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