У меня есть этот код

@echo off
cd c:\windows\System32
for /f "skip=3 tokens=1" %%i in ('TASKLIST /FI "USERNAME eq %userdomain%\%username%"     /FI "STATUS eq running"') do (
if not "%%i"=="svchost.exe" (
if not "%%i"=="cmd.exe" (
if not "%%i"=="skype.exe" (
if not "%%i"=="origin.exe" (
if not "%%i"=="chrome.exe" (
echo.
taskkill /f /im "%%i" 
echo.
)
)
)
)
)
) 
pause

правильно, и я хочу, чтобы он запускал %~dp0start.bat в конце всех операций. Как это сделать? Я попробовал код ниже, но он не работает.

pause
goto start

:start
%~dp0start.bat

3 ответа3

1

Ваше описание того, что вы пытаетесь сделать, наконец, дало мне понять проблему (вероятно, почему вы должны включить как можно больше подробностей в сам вопрос).

Давайте даже не будем вдаваться в причину, по которой вы это делаете, и является ли это отличной идеей, убивая процессы, такие как dwm.exe (менеджер окон рабочего стола), explorer.exe и т.д. В первую очередь.

Ваша проблема в том, что вы запускаете командный файл, который пытается выполнить команды после того, как вы принудительно убили conhost.exe (хост окна консоли).

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

0

Я предполагаю, что я использовал cmd.exe около года назад ...

Помещение «pause» перед командами приводит к разрыву файла, попробуйте добавить еще одну «pause» после dpstart.bat. Поскольку в конце нет команды остановки, она пропустит все после последней.

-1

Чтобы запустить этот файл, введите:

start %~dp0start.bat

Если% ~ dp0start.bat находится не в том же каталоге, что и файл, с которого вы пытаетесь его запустить, представьте, что% ~ dp0start.bat находится в C:\Users\Adam\file\

тип:

cd "C:\Users\Adam\file\"

start %~dp0start.bat

надеюсь я тебе помог

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .