Wczoraj eksperymentowałem z OCaml i opam w systemie Windows bez użycia instalatora - właśnie umieściłem pliki binarne w folderze. Niedługo potem usunąłem pliki binarne. Teraz za każdym razem, gdy uruchamiam dowolny plik wsadowy tylko w programie PowerShell , otrzymuję to:
C:\> .\test.bat
'opam' is not recognized as an internal or external command,
operable program or batch file.
"Hi!!"
Oto zawartość pliku test.bat, ale dzieje się tak z każdym plikiem wsadowym, który wykonuję:
@echo off
echo "Hi!!"
Jak widać z danych wyjściowych w programie PowerShell, wydaje się, że podjęto próbę wykonania opamu, czego oczywiście nie można znaleźć, ponieważ pliki binarne zostały usunięte. Następnie plik wsadowy działa normalnie. Zauważ, że tak się nie dzieje podczas uruchamiania pliku wsadowego za pomocą cmd.exe.
Co tu się dzieje i jak mogę to naprawić?
windows
command-line
batch
powershell
Jeff P.
źródło
źródło
Win+r
tak:Powershell -NoProfile
?Odpowiedzi:
OK, znalazłem odpowiedź:
Istnieje kilka mało znanych kluczy rejestru, których cmd.exe szuka do automatycznego uruchamiania skryptów lub poleceń podczas uruchamiania. Kluczowym pytaniem było
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor\AutoRun
. Najwyraźniej, kiedy uruchomiłem opam, umieściłem goopam configure --autorun
w tym kluczu rejestru. Dlatego za każdym razem, gdy uruchamiałem cmd.exe lub uruchamiałem plik wsadowy w programie PowerShell (który wywołał cmd.exe, aby go uruchomić), próbował uruchomić polecenie w tym kluczu. Odkąd opam został usunięty (i usunięty z systemuPATH
), otrzymywałemO istnieniu tego klucza rejestru dowiedziałem się na blogu Caelum .
Jeśli wpiszesz
cmd /?
, tekst pomocy wyświetli listę kluczy rejestru, których szuka. Tekst pomocy (w systemie Windows 10) mówi:Aby rozwiązać ten problem, szukałem klucza rejestru i go usunąłem. Problem już nie występuje.
źródło