Puncte:0

Ștergeți toate folderele de pe toate unitățile cu „foo” SAU „bar” în numele folderului cu fișier batch

drapel jp

incerc sa ștergeți toate folderele de pe toate unitățile cu modelul de denumire de mai sus, dar numai la primul nivel de folder, adică direct sub litera unității, cum ar fi, de exemplu:

F:\numele acestui folder conține FOO și ar trebui șters

...fără confirmare sau mesaj de eroare (de exemplu, în cazul în care nu sunt găsite foldere), cu un fișier batch.

Am gasit asta: ștergeți toate folderele cu tmp în nume folosind fișierul batch și mă întreb dacă soluția de acolo este un bun punct de plecare?

@echo dezactivat
set dir="c:\FOLDERLOCATION\"
FOR /D /R %dir% %%X IN (*.tmp) DO RMDIR /S /Q "%%X"
pauză
Ieșire
Puncte:1
drapel th

Citiți și urmăriți PENTRU - Efectuați o comandă condiționat de mai multe ori.. Ai putea aplica fie FOR-Foldere, sau Rezultate FOR-Comandă după cum urmează:

FOR-Foldere (dezavantaje: nu țin cont de majuscule și minuscule; metacaracterele nu permit niciun model de tip regex, așa că trebuie să rulăm o buclă de mai multe ori).

@echo dezactivat
setați „dir=c:\FOLDERLOCATION\”
pushd „%dir%”
:: ââââ ecou pentru depanare
FOR /D /R %%X IN (*foo*) DO echo RMDIR /S /Q "%%~fX"
FOR /D /R %%X IN (*bara*) DO ecou RMDIR /S /Q "%%~fX"
:: ââââ ecou pentru depanare
popd
pauză

Rezultate FOR-Comandă in combinatie cu findstr (avantaje: findstr permite independent atât modelul de căutare cu majuscule și minuscule, cât și tip regex):

@echo dezactivat
setați „dir=c:\FOLDERLOCATION\”
FOR /F "delims=" %%X IN ('dir /B/S /A:D "%dir%" ^| findstr /I "foo|bar"') DO 2>NUL echo RMDIR /S /Q " %%~fX"
:: ECHO în linia de mai sus doar pentru depanare
pauză

Un dezavantaj este că dir lista este generată static, așa că trebuie redirecționează mesajele de eroare folosind 2>NUL

drapel jp
Minunat! De asemenea, ar fi posibil să lăsați fișierul batch să ruleze invizibil și să așteptați să apară noi unități, cum ar fi hard disk-uri externe etc., și apoi să acționați și asupra acestora?
drapel jp
Btw., ce face setul „dir=c:\FOLDERLOCATION\”?
JosefZ avatar
drapel th
[Tratam cu ghilimele în scripturile batch Windows](https://stackoverflow.com/questions/535975/).Definiți o variabilă ca `set "dir=c:\FOLDERLOCATION\"` (valoarea ei nu include ghilimele duble) și utilizați-o între ghilimele dacă este necesar, de ex. `type "%dir%%file%%ext%"` (furnizează `set "fișier=un nume de fișier"` și `set "ext=.ext"`)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.