Pomoc w batch'u

Witam. Jestem początkujący. Czy ktoś z was może poprawić mój błąd w tym pliku, który powoduje jego niepoprawne działanie. Będę wdzięczny.

@echo off

echo Gdzie mam umiescic folder ?

echo 1: PARTYCJA SYSTEMOWA

echo 2: TU GDZIE TEN PLIK

set /p wybor=Opcja:

if /p %wybor%=1=MKDIR %HOMEDRIVE%\folder

if /p %wybor%=2=MKDIR %CD%\folder

goto

I JESZCZE JEDNO, dlaczego zmienna środowiskowa %CD% nie tu działa poprawnie ?

copy %CD%\FILES\EDY_FOL2.777 %HOMEDRIVE%\EDY_FOL\

set 777=%HOMEDRIVE%\EDY_FOL\

ren %777%\EDY_FOL2.777 uruchom.bat

@echo off

echo Gdzie mam umiescic folder?

echo 1: PARTYCJA SYSTEMOWA

echo 2: TU GDZIE TEN PLIK

set /p wybor=Opcja:

if %wybor%==1 MKDIR %HOMEDRIVE%\folder

if %wybor%==2 MKDIR %CD%\folder

Co do zmiennej środowiskowej %CD% - zadeklarowałeś ją? I co ona ma oznaczać: CD-ROM? Jeśli się nie mylę, to system sam z siebie nie tworzy takiej zmiennej (przynajmniej Windows XP, który mam). Dodatkowo tworzenie folderu na CD-ROMie może być trudne, nawet jeżeli to nagrywarka. Nie wiem, czy można to zrobić przy pomocy skryptu .bat

simplex , CD to current directory, wystarczy set CD=.

Z tego co wyczytałem z interpretera poleceń, pytając o set /? , to zmienna środowiskowa %CD% - rozwija do ciągu katalogu bieżącego, rozumiem że mowa tu o określeniu miejsca gdzie znajduje się aktualnie wykonywany plik wsadowy. Użyłem tej zmiennej gdyż w tym wypadku działa bez problemu :

@echo off

mkdir %CD%\nowy_folder

pause

exit

(nie rozumiem :? , ale dlaczego tylko gdy odlpalę tego batch’a na innej partycji niż systemowa … ? gdy wykonam tę czynność na partycji systemowej, zmienna %CD% staje się odzwierciedleniem ścieżki do folderu użytkownika , ale … dlaczego ? nie mogę chyba zaczynam nie ogarniać :roll: )

Dodane 06.07.2011 (Śr) 15:39

Wielkie dzięki simplex, bardzo mi pomogłeś poprawiając te błędy. :slight_smile:

Dodane 06.07.2011 (Śr) 16:52

Coś jest nie tak: tu działa

>start explorer.exe %CD%

i otwiera folder w którym znajduje się interpreter poleceń, lub plik wsadowy A tu nie

>xcopy %CD% %HOMEDRIVE%

Nie można odnaleźć określonego pliku.

Pomożcie :frowning:

Dodane 06.07.2011 (Śr) 16:53

coś ta zmienna %CD% nie działa jak powinna, albo ja nie potrafię tego zrobić…

Niestety, wychodzi na to, że nie potrafisz tego zrobić…

Jeżeli dobrze zrozumiałem, co chcesz uzyskać, to kod poniżej skopiuje wszystkie pliki z katalogu bieżącego do katalogu głównego na tej partycji, na której znajduje się system Windows

xcopy %CD%\*.* %HOMEDRIVE%\

Jeżeli jednak nie o to chodzi, to napisz, jaki efekt chcesz uzyskać, a coś się wymyśli

W sumie, po zobaczeniu instalatorów opartych na batch’u, trochę się napaliłem na napisanie czegoś dłuższego. Jednak jak to w życiu nie wszytko wychodzi tak jakby się chciało. Oprócz tego jak już wspomniałem jestem początkujący i nie wiem za wiele. Może mnie ktoś wyśmieje, ale wymyśliłem sobie coś takiego:

(Ogólnie założenie jest takie, że chcę stworzyć jakby ,instalator’’, który wrzuci desktop.ini do wybranego folderu i ,nauczy ‘’ jak ustawić np. tapetę w tym folderze. Bawię się w to jedynie by się czegoś nauczyć, gdyż po wakacjach wybieram się do technikum informatyczno-elektronicznego… a poza tym po prostu to lubię :wink: )

CZĘŚĆ I

@echo off

color 79

title INSTALACJA W TOKU

cls

echo ************************************************

echo * WITAJ. PROGRAM TEN POZWOLI CI STWORZYC

echo * MODYFIKOWALNY FOLDER. DZIEKUJE.

echo ************************************************

pause

copy %CD%\FILES\EDY_FOL2.777 %HOMEDRIVE%\EDY_FOL\

copy %CD%\FILES\EDY_FOL3.777 %HOMEDRIVE%\EDY_FOL\

copy %CD%\FILES\EDY_FOL4.777 %HOMEDRIVE%\EDY_FOL\

copy %CD%\FILES\EDY_FOL5.777 %HOMEDRIVE%\EDY_FOL\

set G77=%HOMEDRIVE%\EDY_FOL\

ren %G77%\EDY_FOL2.777 uruchom.bat

ren %G77%\EDY_FOL3.777 DESKTOP.w8

ren %G77%\EDY_FOL4.777 IMAGE.w8

ren %G77%\EDY_FOL5.777 INSTRUKCJA.jpg

cls

echo *************************************************

echo * 50% CZESC PIERWSZA UKONCZONA POMYSLNIE 

echo *************************************************

pause

goto %G77%\uruchom.bat

exit

CZĘŚĆ II

@echo off

color 79

title INSTALACJA W TOKU

cls

set G77=%HOMEDRIVE%\EDY_FOL\

echo Jak ma sie nazywac folder ?

set /p nazwa=

cls

echo Gdzie mam umiescic folder %nazwa% ?

echo 1: PARTYCJA SYSTEMOWA

echo 2: PULPIT UZYTKOWNIKA

set /p wybor=Opcja:

if %wybor%==1 MKDIR %HOMEDRIVE%\%nazwa%

if %wybor%==2 MKDIR %HOMEPATH%\PULPIT\%nazwa%

cls

if %wybor%==1 copy %G77%\DESKTOP.w8 %HOMEDRIVE%\%nazwa%

if %wybor%==1 copy %G77%\IMAGE.w8 %HOMEDRIVE%\%nazwa%

if %wybor%==1 ren %HOMEDRIVE%\%nazwa%\DESKTOP.w8 Desktop.ini

if %wybor%==1 ren %HOMEDRIVE%\%nazwa%\IMAGE.w8 texture.jpg

if %wybor%==2 copy %G77%\DESKTOP.w8 %HOMEPATH%\PULPIT\%nazwa%

if %wybor%==2 copy %G77%\IMAGE.w8 %HOMEPATH%\PULPIT\%nazwa%

if %wybor%==2 ren %HOMEPATH%\PULPIT\%nazwa%\DESKTOP.w8 Desktop.ini

if %wybor%==2 ren %HOMEPATH%\PULPIT\%nazwa%\IMAGE.w8 texture.jpg

echo *********************************************

echo * 100% OPERACJA UKONCZONA POMYSLNIE      

echo *********************************************

pause

cls

if %wybor%==1 start notepad.exe %HOMEDRIVE%\%nazwa%\Desktop.ini

if %wybor%==2 start notepad.exe %HOMEPATH%\PULPIT\%nazwa%\Desktop.ini

cls

set G77=%HOMEDRIVE%\EDY_FOL

echo Chcesz dowiedziec sie czegos wiecej ?

echo t:TAK (wpisz ,,T'')

echo n:NIE (wpisz ,,N'')

set /p Q=Wybierz:

if %Q%==t cls

if %Q%==n exit

echo Skorzystasz z internetu czy pomocy lokalnej ?

echo x:Internetu (wpisz ,,X'')

echo z:Pomocy lokalnej (wpisz ,,Z'')

set /p J=Wybierz:

if %J%==x start iexplore.exe http://www.google.pl/search?q=edycja+desktop.ini

if %J%==z %G77%\instrukcja.jpg

exit

SCHEMAT

EDY_FOL\EDY_FOL.bat

EDY_FOL\FILES\EDY_FOL2.777 (.bat)

EDY_FOL\FILES\EDY_FOL2.777 (.txt)

EDY_FOL\FILES\EDY_FOL2.777 (.jpg)

EDY_FOL\FILES\EDY_FOL2.777 (.jpg)

Jak na razie mam problem tylko ze tylko z zmienną %CD% i %HOMEPATH% (Twierdzi że nazwa ,Documents’’ , nie jest rozpoznawalna jako polecenie zewnętrzne lub wewnętrzne… ) Z doświadczenia wiem, że jest mały problem z lokalizacjami po spacji… ale żeby w zmiennej :?

Daj w cudzysłowy.