파일을 삭제하는 배치 스크립트


96

다음과 같은 배치 스크립트가 있습니다.

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"

위의 코드는 폴더를 제외한 모든 폴더에서 ".txt"및 ".tsv"파일을 모두 삭제합니다 TEST 100%. 에서 파일 삭제를 들어 TEST 100%내가 같은 오류를 얻고있다을 The Path could not be found. 폴더 이름의 % 기호가 문제를 일으키는 것 같습니다. 누구든지 문제를 해결하고 폴더에서 파일을 삭제하도록 안내 할 수 있습니까 TEST 100%?


왜 첫 줄에 견적이 있습니까? 또한 배치 파일이 이미 첫 번째 줄이있는 해당 드라이브로 변경된 경우 드라이브를 참조하는 이유는 무엇입니까? 나는 당신의 문제를 복제하려고 시도했고 모든 것이 작동했습니다. 아카이브가 테스트 100 %에 존재하는지 확인 했습니까?
RonaldBarzell

답변:


112

%를 다른 것으로 이스케이프해야합니다 ...

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

OP에 대해 말할 수는 없지만 내 시스템에서는 %로 경로를 찾는 데 문제가 없으며 %%로 이스케이프하면 시스템이 찾을 수 없습니다.
RonaldBarzell

@ user1161318-Windows 7에서 테스트했습니다. 이스케이프가 없으면 배치 파일에서 "시스템이 지정된 경로를 찾을 수 없습니다"라는 결과가 나타납니다. 내가 게시 한대로 작동합니다.
Russ Freeman

좋아, XP에서는 반대의 결과를 얻습니다. %로 경로를 잘 찾지 만 %%로는 찾지 못합니다.
RonaldBarzell

5
내 생각 엔 배치 파일이 아닌 명령 프롬프트에서 수행하고 있습니다.
Russ Freeman

2
당신 말이 맞을 것입니다. 배치 파일 내에서 %는 변수 접두사이므로 이스케이프해야한다는 사실을 계속 잊어 버립니다. +1
RonaldBarzell 2012

12

일괄 적으로 작업을 수행하는 방법에는 여러 가지가 있으므로 두 배의 비율로 이스케이프하는 것이 효과가 없다면 %%다음과 같이 시도해 볼 수 있습니다.

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

작동 원리 :

set olddir=%CD%"olddir"배치 파일이 시작된 디렉토리에 원하는 변수 또는 기타 변수 이름을 설정합니다 .

cd /d "path of folder"배치가 볼 현재 디렉토리를 변경합니다. 견적을 유지하고 원하는 경로로 폴더의 경로를 변경하십시오.

del "file name/ or *.txt etc..."배치가 찾고있는 현재 디렉토리에서 파일을 삭제합니다. 파일 이름 앞에 디렉토리 경로를 추가하지 않고 전체 파일 이름 만 사용하거나 확장자가 동일한 여러 파일을 삭제 *.txt하거나 필요한 확장자를 지정합니다.

cd /d "%olddir%"이전 경로와 함께 저장된 변수를 가져와 배치를 시작한 디렉토리로 돌아갑니다. 배치가 이전 디렉토리 경로로 돌아가는 것을 원하지 않는 경우에는 중요하지 않으며 변수 이름을 다음과 같이 변경할 수 있습니다. 무엇 이건 당신은을 변경하여 바랍니다 set olddir=%CD% line.


이것은를 통해 가장 잘 수행됩니다 pushd "folder" && del "filename" & popd.
Nuno André 19 년

10

소프트웨어를 데스크탑에 저장했다고 가정 해 보겠습니다.
제거 프로그램과 같은 전체 폴더를 제거하려면 이것을 사용할 수 있습니다.

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

소프트웨어라는 전체 폴더와 모든 파일 및 하위 폴더가 삭제됩니다.

올바른 폴더를 삭제했는지 확인하십시오. 예 / 아니요 옵션이 없습니다.


4

삭제해야하는 파일의 확장자가 txt있고 위치에 있다는 것을 고려 D:\My Folder하면 bat 파일 내에서 아래 코드를 사용할 수 있습니다.

cd "D:\My Folder"
DEL *.txt 

-7

배치 코드에서 경로에 공백이 없어야하므로 폴더 이름을 "TEST 100 %"에서 "TEST_100 %"로 변경하고 새 코드는 "D : \ TEST \ TEST_100 % \ Archive * .TXT"가됩니다.

이것이 당신의 문제를 해결하기를 바랍니다


6
들어 본 적도 없습니다. 새로운가요? -풍자 해제. 인용 부호로 설정하면 공백 없이도 작동합니다.
Blacktempel 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.