Removendo pastas com um arquivo em lotes

0

Você provavelmente reconhecerá o script abaixo, especialmente este comando, publicado aqui há mais de um ano:

for /f %%i in ('dir /a:d /s /b *PGP Corporation*') do echo rd /s %%i

No entanto, estou tendo problemas com isso porque não está reconhecendo PGP Corporation, tudo o que PGPvejo é que tentei aspas, mas não ajudou. Alguma ideia?

@echo off
cls
echo searching for pgp corp folders
cd c:\users
for /f %%i in ('dir /a:d /s /b *PGP Corporation*') do echo rd /s %%i
echo are these the folders you want to delete? 
choice /t 15 /d n /M "Do you want to delete these folders type y for yes"
if errorlevel 2 goto no
if errorlevel 1 goto yes
goto end

:no
echo you slelected no
pause
goto end

:yes
echo you selected yes and the folders will be deleted
for /f %%i in ('dir /a:d /s /b *PGP Corporation*') do rd /s /q %%i

choice /t 15 /d n /m "Do you want to try and install PGP 10.3 now?
if errorlevel 2 goto noo
if errorlevel 1 goto yess

:noo
echo you selected not to instal. Goodbye.
goto end

:yess
echo Installation of PGP will begin Momentarily
"\\dts\apps\PGP\PGP Latest\pgp 103 64bit.msi"

pause
Josh
fonte
1
Com quem você está falando? Quem é você"? :) Você diz que tentou aspas, mas que 'para saber exatamente o que você quer dizer exatamente, você pode fornecer o código REAL que tentou usar?
Ƭᴇcʜιᴇ007

Respostas:

1

Sua pasta possui espaços, portanto, você deve agrupá-la entre aspas duplas (no forcomando e no docomando) e especificar que o forloop não deve usar espaços como delimitadores com a delimsopção:

for /f "delims=" %%i in ('dir /a:d /s /b "*PGP Corporation*"') do echo rd /s "%%i"
Synetech
fonte
Sugiro usar em "%%~i"vez de simplesmente "%%~i", porque algumas versões do Windows produzem valor citado para a forvariável, outras não. Se o valor obtido for citado, "%%i"produzirá aspas duplas, o que pode levar a efeitos colaterais. %%~ié sempre sem aspas.
LogicDaemon
Bom ponto. Sim, você deve verificar isso também. De fato, é por isso que você deve sempre preceder seus comandos com um echopara que você possa verificar se tudo está correto antes de executar as alterações reais, porque interações inesperadas como essa podem surgir às vezes.
Synetech