Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » как правильно сделать батник ? (*.bat), Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

namchik



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Еще вроде бы можно написать в блокноте шрифтом terminal... тогда тоже проблем с русскими буквами не должно быть...

----------
Моя рабочая лошадка.

Всего записей: 4080 | Зарегистр. 01-06-2004 | Отправлено: 15:59 14-03-2005
Alan Mon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YFred

Цитата:
Пробывал использовать команду fsutil fsinfo drivetype диск. Которое выводит тип носителя, для флешки Съемный носитель. Как это можно использовать для сравнения?

Можно создать файлик типа letters.txt, в котором в каждой строке прописать по букве, начиная с "с" (без двоеточия) и такой батник:

Код:
for /F %%i in (letters.txt) do fsutil fsinfo drivetype %%i: | find "Съемный носитель" && set drive=%%i

На выходе в переменной drive будет буква флешки.

----------
Ребята, давайте жить дружно. Кот Леопольд

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 17:25 14-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
for /F %%i in (letters.txt) do fsutil fsinfo drivetype %%i:

можно и без letters.txt

Код:
 
for %%i in (c d e g) do fsutil fsinfo drivetype %%i:
 


Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 23:50 14-03-2005
Alan Mon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev

Цитата:
можно и без letters.txt  
 
Код:  
for %%i in (c d e g) do fsutil fsinfo drivetype %%i:  
 

Низзя. Во-первых, без кавычек просто выдаст ошибку, а во-вторых, такая конструкция передаст fsutil только "с". Чтобы несколько раз вызвать fsutil с разными буквами эти буквы должны располагаться каждая в своей строке. Для этого и нужен letters.txt.

----------
Ребята, давайте жить дружно. Кот Леопольд

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 09:41 15-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Низзя.

А ты просто попробуй . Без /F и без кавычек

Цитата:
 
Параметр множество может представлять группу файлов или несколько групп файлов. Для задания групп файлов можно использовать подстановочные знаки (* и ?). Следующие множества файлов являются допустимыми:
(*.doc)
(*.doc *.txt *.me)
 


Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 11:37 15-03-2005
Alan Mon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Про "без /F" я и не подумал

----------
Ребята, давайте жить дружно. Кот Леопольд

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 11:55 15-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alan Mon
igor_andreev
Спасибо за помощь. Все получилось. Воспользовался советом igor_andreev'а. Пока не задался вопросом написание батника, даже не подозревал о таких возможностях.
А интересно можно ли запустить диалоговое окно из батника, а затем использовать результат?

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 10:54 16-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А интересно можно ли запустить диалоговое окно из батника, а затем использовать результат?

Все что угодно можно. Ты только вопрос конкретнее поставь, тебе какое диалоговое окно, куда текст ввводить?

Код:
 
@echo off
echo wscript.echo inputbox("Write here","Title", "kin-dza-dza")>tmp.vbs
for /f "delims=" %%a in ('cscript //nologo tmp.vbs') do set my_set=%%a
del tmp.vbs
echo You write: %my_set%
pause
 

Или пользуйся командой set /p

Код:
 
@echo off
echo Write here and press Enter
set /p my_set=
cls
echo You write: %my_set%
pause
 

Или тебе с кнопками Да-Нет-Отмена? Или еще что?

Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 11:30 16-03-2005 | Исправлено: igor_andreev, 11:43 16-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
подскажи  лучше, где найти справку или описание всех команд которые можно использовать (CMD_XP.rar у меня уже есть).

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 16:26 16-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вот какая фигня следующий батник работает на WinXP и не работает Win2000
@echo off
Title ЂаеЁўЁа®ў ­ЁҐ ­  Flash Disk
for %%i in (d e f g h) do fsutil fsinfo drivetype %%i: | find "‘ꥬ­л© ¤ЁбЄ" && set drive=%%i
set drive
for /f "tokens=1-4 delims=." %%a in ('echo %date%') do set mydate=%%a%%b
@echo on
Arj a %drive%:/Arm%mydate% (файл для архивации)
@echo off
if %errorlevel% NEQ 0 (echo ЋиЁЎЄ  § ЇЁбЁ ­  Flash.) else (echo ЂаеЁў жЁп гбЇҐи­® § ўҐа襭 .)  
pause
 
 
в чем дело?

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 11:59 17-03-2005
Alan Mon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YFred
А сам fsutil ты на 2000 принес? Его там изначально нету.

----------
Ребята, давайте жить дружно. Кот Леопольд

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 12:06 17-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alan Mon
Спасибо всё исправил.
Это конечно всё хорошо, но проблема заключается в том что программа fsutil работает только под правами администратора, а это мне не годиться. Нельзя ли, как нибудь по другому узнать букву съемного диска?

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 13:46 17-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нельзя ли, как нибудь по другому узнать букву  

Ну если у тебя на всех компах логические диски больше 1 гб (а они как правило больше, если комп не антиквариат вроде P133), а флешки меньше гига(а они обычно у всех от 16 мб до 1гб), то можно по размеру диска. Удобней vbscript-ом, но можно и батником.

Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 16:31 17-03-2005 | Исправлено: igor_andreev, 16:34 17-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Как не подскажешь? У меня флешки 128-ми метровые. И желательно чтобы и на Win98 работал, но не обязательно.

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 17:34 17-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YFred
Погоди с размером, мне вот тут подумалось, раз флешки у тебя определяются, как сьемный диск, то попробуй такой вариант

Код:
 
@echo off
 
echo for each n in createobject("scripting.filesystemobject").drives>_.vbs
echo if n.drivetype=1 and not n.driveletter="A" then wscript.echo n.driveletter>>_.vbs
echo next>>_.vbs
 
for /f %%a in ('cscript //nologo _.vbs') do set my_disk=%%a
del _.vbs
 
if "%my_disk%_"=="_" (
  echo oops...
) else (
  echo exist removable disk %my_disk%:  
  rem и тут бекапим на %my_disk%
)
 
pause
 

 
Кажется должно работать, сам завтра только проверить смогу. У меня просто с собой только одна гиговая флешка, отформатированная как локальный диск(не сьемный), а остальные флешки и утилита, которая может форматить их по всякому, как USB-HDD, USB-FDD или USB-ZIP на работе.  
Если флешек несколько сразу вставлено или FDD-дисковод не только под буквой "A" надо будет чуть переделать.

Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 19:25 17-03-2005 | Исправлено: igor_andreev, 19:56 17-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
А если FDD вообще нет на машине работать будет?

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 08:55 18-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
FDD вообще нет на машине работать будет

Возьми машину без FDD и проверь , у меня такой нет. Да ты на текст _.vbs посмотри,  
для каждого носителя инфы на компьютере, если это сьемный носитель(n.drivetype=1) и буква у него не "A"(and not n.driveletter="A") то выдаем сообщение с буквой этого диска.
 
Если просто щелкнуть мышой по получившемуся файлику _.vbs, то выскочит диалоговое окно wscript.exe, если запускать из батника с помощью cscript.exe - то вывод в stdout
 
У тебя работает?  
 
 

Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 12:20 18-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev

Цитата:
У тебя работает?

На XP работает на других пока проверить не могу.

Цитата:
 Да ты на текст _.vbs посмотри

Посмотреть посмотрел, но нечего не понял т.к. с WScript'тами дело некогда не имел. Но не плохо было бы научиться.
Я уже спрашивал -
Цитата:
подскажи  лучше, где найти справку или описание
, все промолчали. Может всё таки подскажешь где найти инфу по WScript , был бы очень признателен. Надо и самому когда то учиться.  

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 12:55 18-03-2005
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я еще кстати по одну утилитку впомнил   df.exe называется
http://www.paulsadowski.com/WSH/cmdprogs.htm
Кинуть в %SystemRoot%\system32 куда-нибудь  и
 

Код:
 
@echo off
for /f "tokens=1 delims=:" %%a in ('df -F -b') do set my_disk=%%a
if not "%my_disk%_"=="_" if not "%my_disk%"=="A" (echo %my_disk% & goto :backup)
echo no usb drive
pause
goto :eof
 
:backup
echo start backup to usb drive
rem тут arj a и так далее...
pause
goto :eof
 
:eof
 

 

Цитата:
Может всё таки подскажешь где найти инфу

Не знаю, все, что мне надо, я здесь в интернете нахожу. Вводишь в гугле несколько вариантов необходимых тебе сочетаний, типа "tokens+batch", "ntbatch samples", "vbscript+CreateObject("ChilkatFTP.ChilkatFTP")", "read last line + batch file"  и т.д. и т.п в разных ипостасях и как правило все необходимое или похожее отыскивается по ссылкам, стопудово не ты первый с проблемой столкнулся, наверняка раньше люди где-то про это писали. 98% естественно по английски.  Но код то батника или скрипта интернационален. Намедни нужную мне в тот момент фичу вообще на японском форуме нашел (домен .jp был), все козябрами естественно, но код видно
 
Если с английским все нормально, то на news.microsoft.com  неплохие ньюс-конференции
microsoft.public.win2000.cmdprompt.admin
microsoft.public.scripting.wsh
microsoft.public.scripting.vbscript
и похожие названия.
 
В alt.msdos.batch и alt.msdos.batch.nt натыкался пару раз на решения батников невиданной красоты .
Подпишись, скачивай Outlook Express-ом да читай себе оффлайн.  
 
Книжки в *.chm ищи здесь в разделе eBookz или у китайцев на сайтах типа fixdown.com

Всего записей: 1710 | Зарегистр. 08-12-2004 | Отправлено: 14:44 18-03-2005
YFred



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Огромнейшее спасибо за помощь. Батник написан, вопрос закрыт .
 
Как говориться учиться, учиться и еще раз учиться . (а с английским у меня хреново, но помогают переводчики)

Всего записей: 211 | Зарегистр. 03-03-2005 | Отправлено: 15:14 18-03-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » как правильно сделать батник ? (*.bat), Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru