Chciałbym się dowiedzieć jak napisać plik wsadowy wyszukujący dany plik na komputerze i usuwający go bez potrzeby ingerencji użytkownika.
Na programowaniu w DOS znam się nie najgorzej lecz nie wiem jak zrobić by znalezioną ścieżkę pliku uczynić zmienną, którą się użyje do usunięcia pliku.
SET SCIEZKA="C:\coś\tam\coś\tam"
DEL /y %SCIEZKA%\*.*
??
A może to jednak jest trochę bardziej skomplikowane i potrzebujesz tą ścieżkę pobrać skądś? Np z jakiegoś (tymczasowego) pliku, tak ja tu -> http://www.the-scream.co.uk/forums/t21196.html
PS Ostatni post pobiera dane do podstawiania za zmienną wprost z stdout wiersza poleceń. Pozwala to ominąć zapisywanie do pliku, oczywiście jeżeli z innych przyczyn nie ma takiej potrzeby.
Generalnie chodziło mi o to, że gdzieś na komputerze, na jednym z dysków w nieznanym dla nas miejscu znajduje się np. PLIK.txt. I teraz program powinien wyszukać ten plik na jednym z dysków, zapisać jego ścieżkę (np. jako zmienną) i przy pomocy polecenia DEL usunąć ten plik.
Jak chcesz usunąć konkretny plik o charakterystycznej nazwie, to możesz użyć del z parametrem /s (usuwa pliki o podanej nazwie z folderu i podfolderów).
Jak to plik ukryty lub systemowy to są przełączniki, które to uwzględniają np. pliki Thumbs.db usuwałem sobie tak: del /s /ahs Thumbs.db
Przy stosowaniu maski z ‘*’ przydaje się przełącznik /q (bo inaczej o każdy plik jest pytanie).
Z tym zapisaniem ścieżki jako zmiennej, to już trochę więcej zabawy chyba. Ale raczej też się powinno dać, choć nie mam teraz pomysłu jak
Na razie widzę jeden problem. Jak na ostatnim przeszukiwanym z kolejnych dysków nie znajdzie pliku, to znalezione.txt będzie pusty. Może pomyśl o użyciu ‘>>’ w poszukiwaniach na kolejnych dyskach. (’>>’ dopisuje do pliku zamiast go nadpisywać)
set a=plik.*
dir i:\"%a%" /s /b >> C:\znalezione.txt
dir c:\"%a%" /s /b >> C:\znalezione.txt
dir d:\"%a%" /s /b >> C:\znalezione.txt
dir e:\"%a%" /s /b >> C:\znalezione.txt
dir f:\"%a%" /s /b >> C:\znalezione.txt
dir g:\"%a%" /s /b >> C:\znalezione.txt
set y < "C:\znalezione.txt"
del %y%
Przypadkiem usunęło mi wiele plików z pulpitu i jak się pewnie kiedyś okaże wiele z innych miejsc… Ale to nic… Przynajmniej mam czysty pulpit i nie muszę go sprzątać Tylko nadal nie wiem jak przypisać do zmiennej ścieżkę… --EDIT-- Zrobiłem. Musiałem użyć tokena:
@echo off
set a="znaleziony.*"
dir i:\"%a%" /s /b > C:\znalezione.txt
dir c:\"%a%" /s /b >> C:\znalezione.txt
dir d:\"%a%" /s /b >> C:\znalezione.txt
dir e:\"%a%" /s /b >> C:\znalezione.txt
dir f:\"%a%" /s /b >> C:\znalezione.txt
dir g:\"%a%" /s /b >> C:\znalezione.txt
pause
FOR /F "tokens=1" %%i IN ( C:\znalezione.txt) DO del %%i
Przydałoby się teraz jeszcze dodać cudzysłów dla każdej ścieżki, bo gdy wyszukany plik znajduje się w folderze zawierającym spację to program przestaje działać i nie usuwa.