Почему мой пакетный файл не продолжает выполняться после запуска Diskpart в WinPE?

Я пытаюсь создать пакетный файл для запуска в WinPE. Я хотел бы знать, как запустить большой пакетный файл, который вызывает diskpart, затем завершает работу и продолжает выполнение пакетного файла. Когда я вызываю diskpart, он просто завершает работу после запуска части diskpart. Я знаю, как запустить пакетный файл diskpart.

 @echo off
diskpart /s createparts.txt

Вот пример пакетного файла diskpart, который я использую для создания разделов. Я хочу запустить copyimg.bat в конце файла, чтобы продолжить автоматическую обработку, которая будет копировать образ на новый раздел диска.

select disk 0 
CREATE PARTITION PRIMARY size=100
format quick fs=ntfs label="OS"
assign letter="c"
active 
CREATE PARTITION PRIMARY 
format quick fs=ntfs 
assign letter=d 
exit
call copyimg.bat

Я знаю, что вызываю exit перед вызовом copyimg.bat, однако мне нужно выйти из diskpart перед запуском других сценариев, не связанных с diskpart.


person Community    schedule 13.02.2015    source источник
comment
Что произойдет, если вы переместите call copyimg.bat в последнюю строку сценария diskpart /s createparts.txt?   -  person rojo    schedule 13.02.2015
comment
Если я попытаюсь вызвать copyimg.bat из родительского пакетного файла после diskpart /s createparts.txt , он не вызовет остальную часть скрипта.   -  person    schedule 13.02.2015
comment
Так и должно быть, если copyimg.bat не содержит exit без переключателя /b, и вы не должны исключать call из call copyimg.bat.   -  person rojo    schedule 13.02.2015


Ответы (3)


Вы не можете смешивать пакетные команды и команды diskpart в одном файле. У вас уже есть два файла, но вы помещаете дополнительные пакетные команды не в то место.

Пакетный файл должен выглядеть так:

@echo off
diskpart /s createparts.txt
call copyimg.bat

Файл diskpart createparts.txt должен выглядеть так:

select disk 0 
CREATE PARTITION PRIMARY size=100
format quick fs=ntfs label="OS"
assign letter="c"
active 
CREATE PARTITION PRIMARY 
format quick fs=ntfs 
assign letter=d 
exit

Когда diskpart достигает конца своих инструкций, он завершает работу, и пакетный процессор возобновляет работу с того места, где он остановился.

person Harry Johnston    schedule 14.02.2015

Поместите все ваши строки от «выберите диск 0» до «выход» в файл, например DiskPartCmds.txt, а затем замените эти строки в вашем файле bat этой строкой.

DiskPart.exe < DiskPartCmds.txt
person RGuggisberg    schedule 13.02.2015
comment
Чем это отличается от diskpart /s createparts.txt? От diskpart /? до › /s <script> - Use a DiskPart script. - person DavidPostill; 13.02.2015
comment
@DavidPostill, должно быть то же самое. - person RGuggisberg; 13.02.2015

У меня была такая же проблема с другим скриптом. После вызова вместо продолжения и выполнения следующих команд он останавливался. Я решил это с помощью cmd /C, например:

cmd /C my_script_file.bat
another_command
more_stuff_here
person Pedro José Piquero Plaza    schedule 21.07.2016