Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Проверка отформатированности диска (http://forum.oszone.net/showthread.php?t=215929)

Nuclears 18-09-2011 20:41 1755610

Проверка отформатированности диска
 
Собственно вопрос такой:
например, диск D не отформатирован, его нужно форматнуть....
а как осуществить эту проверку, для NTFS я так придумал
Код:

IF EXIST "D:\System Volume Information" (
ECHO "Отформатирован"
) ELSE (
ECHO "НЕ Отформатирован"
rem echo y | format d: /FS:NTFS /V:DATA /Q
format d: /FS:NTFS /V:DATA /Q /Y
)

а вот если диск имеет файловую систему FAT/FAT32....

вообще в идеале именно проверку того, что он отформатирован/не отформатирован бы сделать.....
Заранее спасибо :)

подобная тема
http://forum.oszone.net/thread-174368.html

Iska 18-09-2011 21:57 1755661

Nuclears, используйте фильтрованный вывод сценария DISKPART, fsutil.exe или wmic.exe. У меня нет свободного раздела, дабы проверить. Попробуйте разные варианты:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sDrive=D:

for /f "tokens=5" %%i in (
    '^(echo select volume %sDrive%^&echo detail partition^)^|diskpart.exe^|find.exe "*"'
) do set sFileSystem=%%i

if defined sFileSystem echo 1. %sFileSystem%

set sFileSystem=
for /f "usebackq tokens=2 delims==" %%i in (
    `wmic.exe LogicalDisk where "Name='%sDrive%'" get FileSystem /value^|find.exe /i "FileSystem"`
) do set sFileSystem=%%i

if defined sFileSystem echo 2. %sFileSystem%

set sFileSystem=
for /f "tokens=4 delims=: " %%i in (
    'fsutil.exe fsinfo volumeinfo %sDrive%^|find.exe /i "Имя файловой системы"'
) do set sFileSystem=%%i

if defined sFileSystem echo 3. %sFileSystem%

endlocal
exit /b 0


Nuclears 19-09-2011 00:07 1755760

Iska, благодарствую!
но, мну пока тока начинает осваивать и консоль и тем более wmi....
могли бы откомментировать строчки?)
по идее работает, но не могу осмыслить циклы for....

ЗЫЖ тестеры виртуальными машинами правят)

к делу не относиться, но при отсутсвии логического раздела сообщает "Отсутствуют экземпляры класса."

при существующем разделе,
1. сообщает "Раздел"
2. и 3. соответсвенно пусто....

при отформатированном разделе,
1., 2, и 3. NTFS/FAT/FAT32

т.е.
Код:

setlocal enableextensions enabledelayedexpansion

set sDrive=D:

for /f "tokens=5" %%i in (
    '^(echo select volume %sDrive%^&echo detail partition^)^|diskpart.exe^|find.exe "*"'
) do set sFileSystem=%%i

IF %sFileSystem%==Раздел (
format d: /FS:NTFS /V:DATA /Q /Y
)

будет ли это работать на T-12, конечно сам проверю и напишу, но может кто проверял?)


ух, создаю сложности......
допустим(крайне редко, но тем не менее):
C:==%SYSTEMDRIVE% (Win7)
D:==%SYSTEMDRIVE%(WinXP)
E:==неформатированный раздел
F:==%CDROM%
нужно автоматом форматнуть Е: (установка win xp на D:\)....
вспоминается код, присваивания переменной %CDROM%
Код:

SetLocal EnableExtensions DisableDelayedExpansion
SetLocal EnableDelayedExpansion
Title Установка переменной %CDROM%
rem Выполнилось на T-12
rem из папки %CDROM%\$OEM$
@Echo Off
FOR %%? IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
  IF /I "%%?:" NEQ "%SYSTEMDRIVE%" CALL :SUB "%%?:" &&GOTO START)
GOTO ENDIT

:START
setenv.exe -m CDROM %CDROM%
:ENDIT
ENDLOCAL &GOTO :EOF

:SUB
IF NOT EXIST %~1\WIN51 EXIT/B 1
SET "CDROM=%~1"
EXIT/B 0

но в нашем случае, имхо, придется перебирать все буковки, либо перебирать до, например IF EXIST %CDROM%\LABEL, и каждый последующий раздел форматировать, если он не форматирован....
вообщем, как такое дело оптимизировать на T-12 (автоматическая установка WinXP)?

Iska 19-09-2011 03:40 1755799

Цитата:

Цитата Nuclears
могли бы откомментировать строчки?) »

Пока нет времени.
Цитата:

Цитата Nuclears
ЗЫЖ тестеры виртуальными машинами правят) »

Верно. Но на данной машине на данный момент я и так перебрал около 700 Мб лишних (и буду «добирать» ещё). Потому и не стал даже пытаться запускать ВМ.
Цитата:

Цитата Nuclears
к делу не относиться, но при отсутсвии логического раздела сообщает "Отсутствуют экземпляры класса." »

Логично.

Не могли бы Вы пояснить некоторые моменты:
1. Процесс будет происходить на этапе установки?
2. Процесс будет происходить именно на этапе T-12 установки?

3. Каким образом получается, что раздел/логический диск/том не отформатирован, но имеет назначенную букву?

Цитата:

Цитата Nuclears
будет ли это работать на T-12 »

Не знаю. Но, думаю, проверяется просто: "cmdlines.txt" "T-12" diskpart.

Nuclears 19-09-2011 22:11 1756436

Цитата:

Цитата Iska
3. Каким образом получается, что раздел/логический диск/том не отформатирован, но имеет назначенную букву? »

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


подумав пораскидывая мозгами по комнате....


Код:

rem Создадим метку
ECHO HDD-D > "D:\HDD-D"
rem проверим-с
IF NOT EXIST D:\HDD-D (
format d: /FS:NTFS /V:DATA /Q /Y
)

повесил данное дело в [GuiRunOnce]
работает!

так же проверил первый вариант предложенный Вами, Iska
и тоже работает)))

в T-12 мой вариант...

работает


ЗЫЖ а какая кодировка должна быть чтобы не кракозябрами писал?)))

Nuclears 20-09-2011 00:28 1756506

ИТОГ:
т.к. счас у мну загрузчик базируется на ISOLinux + (VOLM,VOLS,VOLD) -> для каждой из них WINNT.SIA...WINNT.SIZ ->решил выделить по буковке из каждой категории для установки и запуска форматирования из [GuiRunOnce] по своему методу (создание и проверка метки :), т.е. выделил отдельный пунк меню установки, связано это с тем, что, нет уверенности в работоспособности скриптов с GPT разделами, а информация на винте превыше всего.....)

Iska, Вам отдельное спасибо!
но буду ждать комментарий, осмыслить код хочу)

ЗЫЖ:
даже незнаю как выразить словами , остатки, те что не раскидывал, вскипели :crazy:
счас разбираюсь с \Device\Harddisk#\Partition#, чтобы добавить в переменные среды свои параметры дисков, например %SYSTEMDRIVE% - это C:, %SYSTEMDRIVE%+1 - сделать %DATADRIVE%
(связано это с тем, что, например, папку мои документы мну перенес в D:\MY_DOCUMENTS давно(реестровый твик, что не есть хорошо), а автоматизацию не доделал, т.е. в идеале %DATADRIVE%\MY_DOCUMENTS)
вообщем, у кого есть какие либо заметки по этому, буду благодарен :pray:

Iska 20-09-2011 00:52 1756513

Цитата:

Цитата Nuclears
тоже подумав, по логике вещей, буквы не должно быть, но если разметку делать виндой, то будет)))) »

Видите ли, если именно создавать разделы при установке с нули, то окажется, что эти буквы не имеют никакого отношения к тем буквам, которые окажутся назначенными в самой Windows XP, и дают лишь представление о том, в какой последовательности будут расположены разделы и логические диски в Windows (например, накопитель на оптических дисках может получить букву «D:», а «D:» с экрана установки станет в Windows — «E:»; при наличии подключённого кардридера именно он может получить буквы от «C:» до «F:», а а C: с экрана установки станет в Windows — «H:»). Хуже того — мы не можем из этого экрана управлять, будут ли созданы основные разделы (помимо самого первого, который всегда будет основным), или же дополнительный раздел с логическими дисками на нём. А вот если попробовать создавать только один, первый раздел, а другой/остальные — программно, например — сценарием diskpart,

P.S. Меня, кстати, этот вопрос тоже весьма занимает, но всё не было времени вплотную сим заняться.

Цитата:

Цитата Nuclears
ЗЫЖ а какая кодировка должна быть чтобы не кракозябрами писал?))) »

Как обычно — 866. Но лучше ограничьтесь латиницей, это проще, нежели искать, отчего не работает (и может ли вообще работать на этом этапе).

Nuclears 20-09-2011 01:17 1756527

Цитата:

Цитата Iska
Видите ли, если именно создавать разделы при установке... »

Тут не соглашусь.... практика показала:
при наличии кардридера и одного CD/DVD: разметка в установке будет C-F(G,H)-кардридер, далее HDD(PrimaryPartition), CD/DVD, далее Logical Partitions (обычно мну кардридер отключает для установки)
кстати, если после первичной разметки перезапустить установку, то HDD(PrimaryPartition) станет C
при отсутсвии кардридера:
A) винт не имеет разделов(например новый): HDD(PrimaryPartition)-C, CD/DVD(если 1шт)-D, все остальное (Logical Partitions)

но тут добавлю, если после первичной разметки, удалить все партиции, то будет как на скрине выше
B) винт имеет уже разделы: ну тут предсказать сложно, а если еще и GPT....

вообщем итог(проверенный на сотнях машин): 99% какая разметка в установочнике, такая и под виндами

diskpart пока тока хелпы почитал... но судя по всему именно в создании сценария и лежит решение (как раньше для PQ Magic :) )

по поводу нескольких primary, отказался от такой затеи давно, Win это не *nix, где по человечески слайсы и партиции..., хотя начиная с Win7 мне GPT симпотизирует :)

Цитата:

Цитата Iska
Как обычно — 866 »

омм....

так же пробовал CHCP866, CHCP1251 и т.д.(сами файлы в разных кодировках), всегда кракозябры (у меня на T-12 %CDROM% создается)

Цитата:

Цитата Iska
и может ли вообще работать на этом этапе »

вот-вот.... я так и не добился положительного результата :(, хотя на T-12 у меня никакого взаимодействия с пользователем, поэтому не критично, но на будущее хотел узнать, может чего не правильно делаю :)

Iska 20-09-2011 08:15 1756586

Цитата:

Цитата Nuclears
Тут не соглашусь.... практика показала:
при наличии кардридера и одного CD/DVD: разметка в установке будет C-F(G,H)-кардридер, далее HDD(PrimaryPartition), CD/DVD, далее Logical Partitions (обычно мну кардридер отключает для установки) »

Я про то же. Значит, просто не поняли друг друга. Я тоже предпочитаю отключать кардридер при установке. Иногда (при опломбированном корпусе приходится вырубать USB контроллер целиком).

Цитата:

Цитата Nuclears
кстати, если после первичной разметки перезапустить установку, то HDD(PrimaryPartition) станет C »

Будет возможность — опробую.
Цитата:

Цитата Nuclears
кстати, если после первичной разметки перезапустить установку, то HDD(PrimaryPartition) станет C
при отсутсвии кардридера: »

Угу.
Цитата:

Цитата Nuclears
A) винт не имеет разделов(например новый): HDD(PrimaryPartition)-C, CD/DVD(если 1шт)-D, все остальное (Logical Partitions) »

Тоже при случае посмотрю этот случай на счёт отображения букв на этапе установки, возможно подзабыл.
Цитата:

Цитата Nuclears
по поводу нескольких primary, отказался от такой затеи давно, »

Отчего?
Цитата:

Цитата Nuclears
так же пробовал CHCP866, CHCP1251 и т.д.(сами файлы в разных кодировках), всегда кракозябры (у меня на T-12 %CDROM% создается) »

Я ж говорил — тут сложно сказать, чего именно не хватает для отображения кириллицы на T-12, а вариантов может быть предостаточно. Я этим не озадачивался.

Amigos 21-09-2011 06:55 1757154

Цитата:

Цитата Nuclears
а какая кодировка должна быть чтобы не кракозябрами писал?))) »

[решено] Корректное отображение кириллицы в командной строке запущенной на T40

Nuclears 22-09-2011 02:47 1757831

Цитата:

Цитата Iska
Отчего? »

ну как сказать, два примари раздела без нормального загрузчика(например GRUB4DOS) просто баловство :)
а в работе, обычно этого не требуется и вовсе :)

Amigos, благодарствую, но ну ее нафик, эту кирилицу в T-40(T-12) :)

Iska 22-09-2011 05:38 1757847

Nuclears, это подмена аргументов. Чем логические диски в дополнительном разделе лучше, нежели до трёх основных разделов (помимо первого)?

Nuclears 22-09-2011 15:43 1758179

Цитата:

Цитата Iska
Чем логические диски в дополнительном разделе лучше, нежели до трёх основных разделов (помимо первого)? »

множество раз бывали случаи сбоя активного диска, и он становился скрытым разделом, в с одним примари дополнительными никогда такого не происходило(это касается только WinNT, Win2k, WinXP, Win2k3, т.е. тех, кто не понимают нативно GPT)

Iska 06-12-2011 05:48 1810075

Цитата:

Цитата Nuclears
множество раз бывали случаи сбоя активного диска, и он становился скрытым разделом, а с одним примари и дополнительными никогда такого не происходило »

Значит, Вам «везло». Ни разу подобного не видел, и слышать доселе не приходилось.


Время: 06:13.

Время: 06:13.
© OSzone.net 2001-