Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для m0nkrus

Старожил


Сообщения: 150
Благодарности: 16

Профиль | Сайт | Отправить PM | Цитировать


Ксеноинженер, вы пробовали проверять свою конструкцию в деле? У меня совмещение двух строк без промежуточного помещения результатов в файл disks.txt:
Код: Выделить весь код
ECHO LIST DISK | DISKPART | FINDSTR /r /c:"\*$" > disks.txt
FOR /f "tokens=2" %%i IN (disks.txt) DO ECHO select disk %%i >> diskpart.txt && ECHO detail disk >> diskpart.txt
...в аналог вашего кода:
Код: Выделить весь код
for /f "tokens=2" %%I IN ('Echo List Disk ^| Diskpart ^| Findstr /e "Boot Загрузоч"') do echo Select Disk ^%%I > diskpart.txt && echo uniqueid disk >> diskpart.txt
...не проходило - ругается то на команду echo, то на знак |. При помощи ^ вы экранировали символы |, но остаются ли последние после этого работоспособными? Кстати, при применениии конструкции "echo Select Disk ^%%I > diskpart.txt" вы получите перезапись старых значений новыми, а не накопление оных. Это не говоря уже о том, что искать подстроки "Boot Загрузоч" в результатах срабатывания команды List Disk бесполезно - их там нет.

Поиск "{" через команду uniqueid disk действительно может помочь в определении GPT-раздела. Только тут надо каждый раздел подключать и проверять поочередно, а я с помощью команды List Disk нахожу их все одним махом. Да и ничуть uniqueid disk не поможет в определении, есть ли среди GPT-дисков загрузочный, для чего я и использую detail disk.

Если честно, в вашем скрипте столько ошибок и логических нестыковок, что он в таком виде не заработает совершенно точно. Это я могу сказать даже без тестирования.

Последний раз редактировалось m0nkrus, 27-04-2013 в 00:11.


Отправлено: 23:47, 26-04-2013 | #21