Skrypt wsadowy do usuwania plików

96

Mam następujący skrypt wsadowy.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

Powyższy kod usuwa wszystkie pliki „.txt” i „.tsv” ze wszystkich folderów z wyjątkiem folderu TEST 100%. Za usunięcie plików z TEST 100%otrzymuję błąd jako The Path could not be found. Myślę, że symbol% ​​w nazwie folderu tworzy problem. Czy ktoś może mi pomóc rozwiązać problem i usunąć pliki z folderu TEST 100%?

Satheesh
źródło
Dlaczego masz cytat w pierwszym wierszu? Dlaczego odnosisz się do dysku, skoro plik wsadowy został już zmieniony na ten dysk w pierwszym wierszu? Próbowałem odtworzyć twój problem i wszystko działało. Czy potwierdziłeś, że archiwum istnieje w teście 100%?
Ronald Barzell

Odpowiedzi:

112

Musisz uciec z% innym ...

del "D:\TEST\TEST 100%%\Archive*.TXT"
Russ Freeman
źródło
Nie mogę mówić w imieniu OP, ale w moim systemie nie ma problemu ze znalezieniem ścieżki z%, a ucieczka z %% uniemożliwia systemowi jej znalezienie.
Ronald Barzell,
@ user1161318 - Przetestowałem to w systemie Windows 7. Bez znaku ucieczki w pliku wsadowym powoduje wyświetlenie komunikatu „System nie może znaleźć określonej ścieżki”. Jak zamieściłem, to działa.
Russ Freeman,
Ok, na XP mam odwrotne wyniki. Znajduje ścieżkę w porządku z%, ale nie znajduje jej w %%.
Ronald Barzell
5
Domyślam się, że robisz to z wiersza poleceń, a nie z pliku wsadowego.
Russ Freeman,
2
Pewnie masz rację. Ciągle zapominam, że w pliku wsadowym% jest prefiksem zmiennej i musisz go uciec. +1
Ronald Barzell
12

Istnieje wiele sposobów robienia rzeczy zbiorczo, więc jeśli ucieczka z podwójnym procentem %%nie działa dla Ciebie, możesz spróbować czegoś takiego:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

Jak to działa:

set olddir=%CD%ustawia zmienną "olddir"lub dowolną inną nazwę zmiennej, którą lubisz, na katalog, z którego został uruchomiony plik wsadowy.

cd /d "path of folder"zmienia bieżący katalog, na który będzie patrzeć partia. zachowaj cytaty i zmień ścieżkę folderu do którejkolwiek ścieżki chcesz.

del "file name/ or *.txt etc..."usunie plik z bieżącego katalogu, na który patrzy Twoja partia, po prostu nie dodawaj ścieżki katalogu przed nazwą pliku i po prostu miej pełną nazwę pliku lub, aby usunąć wiele plików z tym samym rozszerzeniem z *.txtlub jakimkolwiek rozszerzeniem, którego potrzebujesz.

cd /d "%olddir%"pobiera zmienną zapisaną ze starą ścieżką i wraca do katalogu, w którym rozpocząłeś wsad, nie jest to ważne, jeśli nie chcesz, aby partia wracała do poprzedniej ścieżki katalogu i jak podano wcześniej, nazwę zmiennej można zmienić na cokolwiek chcesz, zmieniając set olddir=%CD% line.

user1931470
źródło
Najlepiej to zrobić pushd "folder" && del "filename" & popd.
Nuno André
10

Powiedzmy, że zapisałeś oprogramowanie na pulpicie.
jeśli chcesz usunąć cały folder, jak program dezinstalacyjny, możesz tego użyć.

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

spowoduje to usunięcie całego folderu zwanego oprogramowaniem oraz wszystkich jego plików i podfolderów

Upewnij się, że usunąłeś właściwy folder, ponieważ nie ma opcji Tak / Nie

user3674709
źródło
4

Weź pod uwagę, że pliki, które chcesz usunąć, mają rozszerzenie txti znajdują się w lokalizacji D:\My Folder, wtedy możesz użyć poniższego kodu w pliku bat.

cd "D:\My Folder"
DEL *.txt 
Sarath Avanavu
źródło
-7

w kodzie wsadowym ścieżka nie powinna zawierać spacji, więc zmień nazwę folderu z „TEST 100%” na „TEST_100%”, a nowy kod zostanie usunięty „D: \ TEST \ TEST_100% \ Archive * .TXT”

mam nadzieję, że to rozwiąże twój problem

Ravi
źródło
6
Nigdy o tym nie słyszałem. Czy to nowe? -Sarkazm wyłączony. Działa ze spacjami tak samo, jak bez, o ile ustawisz go w cudzysłowie.
Blacktempel