Pomoc w batch'u


(*aroo*) #1

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


(Simplex111) #2
@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


([alex]) #3

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


(*aroo*) #4

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ć...


(Simplex111) #5

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


(*aroo*) #6

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 :?


(Drobok) #7

Daj w cudzysłowy.