Skocz do zawartości
kreatortd

Moze Mi Ktos Pomoc ?

Rekomendowane odpowiedzi

Ten "pseudo program" ma za zadanie usowac plik Temp..ale nie robi tego..moze ktos mi powiedziec dlaczego i ewentualnie co zrobic zeby zaczal dzialac poprawnie ??

#include <iostream>#include <dir.h>#include <conio.h>using namespace std;int rmdir(const char *path);main(){      cout << " Czy jestes pewnien ze chcesz usunac zawartosc "              "katalogu Temp ?[c:\\windows\\temp]" << endl;                           char pytanie;              cin >> pytanie;           if ( (pytanie == 'T') | ( pytanie == 't') )      rmdir("C:\\WINDOWS\\Temp");           else      exit(1);      getch();      }

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

spróbuj może "C:\Windows\Temp"

A jak nie to int main ()

1602997[/snapback]

"C:\Windows\Temp" ->> tak ne moze byc napisane..bo zawsze po slashu kompilator spodziewa sie jakiegos znaku , litery itp ...

Ale program sie kompiluje wiec po co pisac int main () ?? Program tylko nie usowa katalogu Temp i wlasnie w tym caly broblem..dlaczego on tego nie robi skoro funkcja rmdir powinno go usunac :mur:

Edytowane przez kreatortd

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam

 

Czy z jakiegoś konkretnego powodu musisz używać Cpp?

Dla windowsa jest VBscript. Ponizej zamieszczam skrypt kasujacy katalog nie zależnie od tego czy jest on pusty czy pełny.

 

OPTION EXPLICITON ERROR RESUME NEXTdim fsodim errDescdim pathpath = "C:\Temp"set fso=createObject("Scripting.FileSystemObject")fso.DeleteFolder path, true  ' Wynik kasowaniaselect case hex(err.number)    case 4C        errDesc=" Nie ma takiego katalogu"    case 46        errDesc=" plik zajety"    case 0        errDesc=" ok."    case else        errDesc=cstr(hex(err.number))end selectwscript.echo "Kasowanie " & path & " : " &errDesc ' zwolnienie zasobowset fso=nothing

Best Regards

Michał J. / FooKy

 

PS. Dla niewtajemniczonych aby uruchomić VBS należy zapisać skrypt jako nazwa.vbs Nastepnie uruchomic poleceniem cscript nazwa.vbs (uruchomi skrypt w trybie konsoli) lub wscript nazwa.vbs (wszystkie komunikaty beda pojawiały sie w postaci popup'ów) ewentualnie kliknac dwukrotnie na ikonke pliku. :wink:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam

 

Czy z jakiegoś konkretnego powodu musisz używać Cpp?

Dla windowsa jest VBscript. Ponizej zamieszczam skrypt kasujacy katalog nie zależnie od tego czy jest on pusty czy pełny.

 

OPTION EXPLICITON ERROR RESUME NEXTdim fsodim errDescdim pathpath = "C:\Temp"set fso=createObject("Scripting.FileSystemObject")fso.DeleteFolder path, true  ' Wynik kasowaniaselect case hex(err.number)    case 4C        errDesc=" Nie ma takiego katalogu"    case 46        errDesc=" plik zajety"    case 0        errDesc=" ok."    case else        errDesc=cstr(hex(err.number))end selectwscript.echo "Kasowanie " & path & " : " &errDesc ' zwolnienie zasobowset fso=nothing

Best Regards

Michał J. / FooKy

 

PS. Dla niewtajemniczonych aby uruchomić VBS należy zapisać skrypt jako nazwa.vbs Nastepnie uruchomic poleceniem cscript nazwa.vbs (uruchomi skrypt w trybie konsoli) lub wscript nazwa.vbs (wszystkie komunikaty beda pojawiały sie w postaci popup'ów) ewentualnie kliknac dwukrotnie na ikonke pliku.  :wink:

1604184[/snapback]

Owszem , chce uzyc cpp bo nie znam innego jezyka programowanie , moze niedlugo zabiore sie za jave i assemblera ale najpierw poznam lepiej c++ .

 

Albo możesz użyć funkcji z winapi

BOOL RemoveDirectory(    LPCTSTR lpPathName  // address of directory to remove     );

1604271[/snapback]

A co to win32api to jak mam uzyc tej funkcji :blink: :blink: ????

Jesli mozesz antrykot111 to podaj jakis krotki przyklad z uzyciem tej wlasnie "funkcji" ..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

WinAPI to w skrócie wszystkie funkcje obsługujące window'sa, czyli okienk i te sprawy :wink:

 

A co do tej funkcji to coś takiego powinno działać :

#include <windows.h>int main(){RemoveDirectory("C:\\a");return 0;}

Z tym że katalog też musi być pusty.

A jeśli by nie działało, to spróbuj na jakimś innym katalogu.

I sprawdz co zwraca ta funkcja, powinno być różne od 0 jeśli sie powiedzie :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

WinAPI to w skrócie wszystkie funkcje obsługujące window'sa, czyli okienk i te sprawy :wink:

 

A co do tej funkcji to coś takiego powinno działać :

#include <windows.h>int main(){RemoveDirectory("C:\\a");return 0;}

Z tym że katalog też musi być pusty.

A jeśli by nie działało, to spróbuj na jakimś innym katalogu.

I sprawdz co zwraca ta funkcja, powinno być różne od 0 jeśli sie powiedzie :)

1604470[/snapback]

No i w tym caly problem..chodzi mi o to ze katalog nie ma byc pusty ..i ma byc usowany zawsze (czy jest pusty czy nie) ..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dla del

/F - Wymusza usuwanie plików z atrybutem tylko do odczytu.

/S - Usuwa określone pliki ze wszystkich podkatalogów.

 

Program można nawet skrócić do takiej postaci

void main(void){  system("rmdir /S c:\\nazwa_folderu");  system("pause");}
dla rmdir

/S - Usuwa wraz z określonym katalogiem wszystkie katalogi i pliki w nim umieszczone. Stosuje się do usuwania drzewa katalogów.

 

Uruchom wiersz poleceń i wpisz help wybierz sobie interesujące Cię polecenie np RD i dodaj na końcu /? a otrzymasz niezbędne informacje na ten temat.

Praktycznie do tego problemu nie opłaca się robić programu wystarczy stworzyć plik wsadowy bat i umieścić go w autostart bo pewnie chodzi o to żeby folder był czyszczony co restart systemu :wink:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No tak dwie linijki kodu trudno nazwać programem zwłaszcza że lepiej zrobić plik wsadowy nie trzeba kompilować i zajmuje znacznie mniej miejsca z drugiej strony tworzenie stu lub więcej lini kodu ażeby nie korzystać z system() jest stratą czasu zwłaszcza że oba rozwiązania prowadzą do jednego.

A jakby nie było użytych programów w systemie?

Te polecenia są częścią systemu

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam

 

Piszesz zwykly plik textowy w którym pokolei podajesz komendy jak na konsoli bys to robil.

Potem zmieniasz jego rozszerzenie na .bat i juz masz gotowy plik wykonywalny

 

np:

mkdir acd aecho ala > ala.txtcd ..rmdir /s /q a

taki text w pliku test.bat

spowoduje utworzenie katalogu

potem przejscie do niego

utworzenie pliku ala.txt ze slowem ala

wyjscie katalog wyzej

usuniecie katalogu wraz ze wszystkimi plikami (/q zapobiega pytaniu o potwierdzenie)

 

Best Regards

Michał J. / FooKy

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...