ďťż
Podstrony
|
telcocafePozdrawiam. Proszę o pomoc w napisaniu programu wsadowego, który miałby dodawać bądź usuwać klucze do rejestru windows. Otóż gdy pracuję w wierszu poleceń bez problemu mogę dodawać klucze i ustawiać wartości gdy natomiast tworze z tych poleceń plik wsadowy po jego uruchomieniu nic się nie dzieje. Podejrzewam, że to błędy w składni (budowie pliku wsadowego). Proszę o pomoc.używasz polecenia "reg"? Czy może regedit? Ja robie np. coś takiego: reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce" /v %i% /d "c:\%~n1_%i%.cmd" /f >>nul albo: regedit /e SubEdit.reg HKEY_CURRENT_USER\Software\SubEdit_Player_Settings Ale masz stworzony plik wsadowy czy po prostu wpisujesz w wierszu poleceń? Bo ze wpisywaniem komend bezpośrednio w wierszu poleceń nie mam żadnych problemów, natomiast gdy chcę stworzyć plik wsadowy z takiego polecenia (*.bat) po prostu nie działa. To jest copy-paste z pliku .cmd... @echo off echo subedit regedit /e SubEdit.reg HKEY_CURRENT_USER\Software\SubEdit_Player_Settings if not %errorlevel%==0 pause @echo off rem usuwa pliki po restarcie systemu rem Aby uzyc tego skryptu nie uruchamiaj go klikajac! rem Upusc plik ktory chcesz usunac na ikonke tego skryptu! if "%~p1"=="" goto upusc :start if "%~p1"=="" goto zrobione :rerand set i=%random% if exist "c:\%~n1_%i%.cmd" goto rerand reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce" /v %i% /d "c:\%~n1_%i%.cmd" /f >>nul echo @echo off >> "c:\%~n1_%i%.cmd" if exist "%~1\" echo rd /s /q "%~1" >> "c:\%~n1_%i%.cmd" if not exist "%~1\" echo del /f "%~1" >> "c:\%~n1_%i%.cmd" echo if exist "%~1" goto notsuc >> "c:\%~n1_%i%.cmd" echo attrib -h "c:\%~n1_%i%.cmd" >> "c:\%~n1_%i%.cmd" echo del /f /q "c:\%~n1_%i%.cmd" >> "c:\%~n1_%i%.cmd" echo goto end >> "c:\%~n1_%i%.cmd" echo :notsuc >> "c:\%~n1_%i%.cmd" echo echo. >> "c:\%~n1_%i%.cmd" echo echo Brak powodzenia, usunac po ponownym restarcie? >> "c:\%~n1_%i%.cmd" echo echo. >> "c:\%~n1_%i%.cmd" echo pause >> "c:\%~n1_%i%.cmd" echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce" /v %i% /d "c:\%~n1_%i%.cmd" /f >> "c:\%~n1_%i%.cmd" echo :end >> "c:\%~n1_%i%.cmd" attrib +h "c:\%~n1_%i%.cmd" set i= echo. echo Plik "%~nx1" zostanie usuniety przy nastepnym restarcie. shift goto start :zrobione echo. echo Zrobione... goto end :upusc echo Aby uzyc tego skryptu nie uruchamiaj go klikajac! echo Upusc plik ktory chcesz usunac na ikonke tego skryptu! goto end :end przetestuj sam czy działa To jest copy-paste z pliku .cmd... @echo off echo subedit regedit /e SubEdit.reg HKEY_CURRENT_USER\Software\SubEdit_Player_Settings if not %errorlevel%==0 pause @echo off rem usuwa pliki po restarcie systemu rem Aby uzyc tego skryptu nie uruchamiaj go klikajac! rem Upusc plik ktory chcesz usunac na ikonke tego skryptu! if "%~p1"=="" goto upusc :start if "%~p1"=="" goto zrobione :rerand set i=%random% if exist "c:\%~n1_%i%.cmd" goto rerand reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce" /v %i% /d "c:\%~n1_%i%.cmd" /f >>nul echo @echo off >> "c:\%~n1_%i%.cmd" if exist "%~1\" echo rd /s /q "%~1" >> "c:\%~n1_%i%.cmd" if not exist "%~1\" echo del /f "%~1" >> "c:\%~n1_%i%.cmd" echo if exist "%~1" goto notsuc >> "c:\%~n1_%i%.cmd" echo attrib -h "c:\%~n1_%i%.cmd" >> "c:\%~n1_%i%.cmd" echo del /f /q "c:\%~n1_%i%.cmd" >> "c:\%~n1_%i%.cmd" echo goto end >> "c:\%~n1_%i%.cmd" echo :notsuc >> "c:\%~n1_%i%.cmd" echo echo. >> "c:\%~n1_%i%.cmd" echo echo Brak powodzenia, usunac po ponownym restarcie? >> "c:\%~n1_%i%.cmd" echo echo. >> "c:\%~n1_%i%.cmd" echo pause >> "c:\%~n1_%i%.cmd" echo reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce" /v %i% /d "c:\%~n1_%i%.cmd" /f >> "c:\%~n1_%i%.cmd" echo :end >> "c:\%~n1_%i%.cmd" attrib +h "c:\%~n1_%i%.cmd" set i= echo. echo Plik "%~nx1" zostanie usuniety przy nastepnym restarcie. shift goto start :zrobione echo. echo Zrobione... goto end :upusc echo Aby uzyc tego skryptu nie uruchamiaj go klikajac! echo Upusc plik ktory chcesz usunac na ikonke tego skryptu! goto end :end przetestuj sam czy działa No właśnie dzieje się to samo co z moimi 'wsadami'. Wiersz polecenia pokazuje się na ułamek sekundy i znika nie dodając (bądź usuwając) wartości do rejestru. Najciekawsze jest to że dziś udało mi się stworzyć plik wsadowy który działał tak jak powinien. A teraz próbuje go uruchomić i nic. Nie mam zielonego pojęcia co jest grane. Może znajdzie się jakaś mądra głowa :). Wiesz co spróbuj: włącz ręcznie wiersz polecenia, i z niego uruchom skrypt. No i oczywiście zakomentuj najpierw wszystkie "@echo off" Chodzi mi o to żeby coś zostało na ekranie... Albo przekieruj wyjścia (standard i błąd) do pliku... Tylko powiem Ci szczerze że średnio pamiętam te wszystkie komendy. Chodzi Ci o wpisanie komendy w wierszu (czyli reg add itp) czy też o wydanie komendy która by uruchomiła (wykonała) gotowy plik wsadowy? Dam konkretny przykład - będzie łatwiej. Chcę do klucza HKCU\Software\Microsoft\Windows\CurrentVersion\Policies dodać podklucz o nazwie Explorer (dam sobie spokój z wartościami) wiec wydaję komendę: reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer. I po wpisaniu tego bezpośrednio do wiersza klucz zostaje dodany do rejestru (ale wsadowy z tym poleceniem nie działa). Może zaproponuj jak w tym wypadku miałby wyglądać plik wsadowy? Zapewne robie jakiś błąd. Użytkownik montanamax edytował ten post 03 styczeń 2007, 02:01 1. uruchom z wiersz poleceń plik wsadowy: mycostamuser>mojplik.cmd i enter mycostamuser> to znak zachęty wpisz tylko: "mojplik.cmd" i naciśnij enter. Chodzi o to żeby skrypt wykonał sie i okno NIE ZNIKŁO tylko było widać jaki błąd wystąpił (i napisz jaki to błąd) 2. to: "reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" zaznacz to między znakami cudzysłowu i wklej w notatniku, zapisz jako .cmd (czy .bat) i MA DZIAŁAĆ :) nie ważne czy z pliku wsadowego, czy z linii komend - u mnie działa. Tzn. mam ten wpis w rejestrze, więc dodałem na końcu '2' czyli .....\explorer2 i po ponownym włączeniu regedita mam taki klucz (folder). 3. wszystkie komendy dostępne w winxp są w pliku pomocy nazwanym "ntcmds.chm" poszukaj w katalogu windows (ciężko sie do tego dogrzebać przez standardowy interfejs pomocy) //edit: nie zapisujesz przypadkiem pliku wsadowego w jakimś "innym" kodowaniu? unikod czy iso? //masz jeszcze cały plik: dodaj.cmd Użytkownik Radek edytował ten post 03 styczeń 2007, 06:05 No nie wiem ale w dalszym ciągu nie da rady. Jak wpisuję bezpośrednio w wierszu poleceń klucz zostaje dodany (wyświetla się napis 'Operacja zakończona pomyślnie'). Jak z pliku *.cmd - to co do tej pory czyli mignie na moment okno wiersza i znika nie dodając wartości. Co do kodowania to rzeczywiście miałem Unicode ale zmiana na inne (wypróbowałem wszystkie) nic nie dała. Natomiast polecenie 'mycostamuser>mojplik.cmd i enter' (oczywiście w miejscu 'mojplik' podaję nazwę swojego) powoduje wyświetlenie komunikatu że nie jest to poprawne polecenie, plik wykonywalny lub wsadowy. Miałbym prośbę do Ciebie. Jeśli możesz napisz mi treść (gotowy cały kod a nie tylko komendę) pliku wsadowego z kluczem o którym wcześniej wspominałem (dodający podklucz Explorer do klucza HKCU\Software\Microsoft\Windows\CurrentVersion\Policies). Użytkownik montanamax edytował ten post 03 styczeń 2007, 03:42 Spróbuj czegoś takiego: @echo off rem nie pokazuje tego, co plik bat robi... echo REGEDIT4 >>dodaj.reg rem zapisuje REGEDIT4 do pliku dodaj.reg echo. >>a.reg rem zapisuje echo do pliku dodaj.reg echo "reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" >>dodaj.reg rem zapisuje klucz jaki chcesz dodać do pliku dodaj.reg echo. >>dodaj.reg rem zapisuje jeszcze raz echo do pliku dodaj.reg regedit /s dodaj.reg rem uodpala plik dodaj.reg z parametrem /s del dodaj.reg >nul rem usuwa plik dodaj.reg Tam gdzie masz echo "reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" >>dodaj.reg jakby nie działało, spróbuj bez " " A żeby się upewnić, czy działa możesz powyższą linijkę zastąpić taką: echo [-HKEY_CURRENT_USER\Jakiś\Klucz\Do\Usunięcia] >>dodaj.reg Użytkownik mtek edytował ten post 03 styczeń 2007, 06:58 zaznacz to między znakami cudzysłowu i wklej w notatniku, zapisz jako .cmd (czy .bat) i MA DZIAŁAĆ Uwierz że taką właśnie komendę wpisywałem w wierszu i działała, a we wsadowym nie. :) Tym razem udało się uruchomić Wasze pliki i działają bez problemów. Obawiam się że przyczyna tkwi w moim systemie (choć jest 'świeży'). Będę próbował ze swoimi plikami i zobaczę co będzie się działo. Dzięki wielkie za pomoc. Radek Tobie przede wszystkim. Użytkownik montanamax edytował ten post 03 styczeń 2007, 13:05 |
|||
Sitedesign by AltusUmbrae. |