Próbuję zreplikować wiersz polecenia za pomocą plików wsadowych. Mój obecny kod jest odtworzony poniżej.Replikowanie wiersza polecenia przy plikach wsadowych
@echo off
title Command Prompt
:LOOP
set /p COMMAND="%CD%>"
title Command Prompt - %COMMAND%
call %COMMAND%
echo.
title Command Prompt
goto LOOP
Jednak mam jeden problem. Jeśli wywołuję program (taki jak gpedit.msc
), plik wsadowy czeka, aż program wróci przed kontynuowaniem, gdy normalny wiersz polecenia powróci bez oczekiwania na powrót programu.
Jak sprawdzić, czy polecenie jest programem, więc mogę użyć polecenia start
?
Nie będzie to możliwe w przypadku samej CMD. To, czy CMD będzie czekać, czy nie, czekać na zakończenie programu, określa, czy program jest oparty na GUI, czy na tekście. np .: 'notepad.exe' kontra' chkdsk.exe'. A CMD nie dostarcza polecenia, aby to wykryć. – Jay
@Jay To rozczarowujące. W każdym razie dzięki. – mc10
Cóż, tam * jest * droga, twarda. Który ma przeanalizować nagłówek pliku EXE (nagłówek formatu pliku PE), aby sprawdzić, czy jest to GUI lub program tekstowy. Możesz to zrobić za pomocą skryptu VBScript jako pomocnika, który odczytuje plik binarny EXE (ręcznie, na poziomie bajtów) i raportuje wynik. Możesz także zrobić to za pomocą skryptu 'DEBUG.EXE', ale jest to bardziej kłopotliwe. – Jay