2016-09-07 4 views
0

다음 배치 파일을 사용하여 여러 드라이브에서 원하지 않는 파일을 삭제합니다.디렉토리 변수로 일괄 삭제 - windows 7

set /p DELPATH=<"C:\DELETE-ALL.txt" 

for /f "usebackq delims=;" %%i in ("C:\DELETE-ALL.txt") do @del /q "D:\HFI\%DELPATH%\%%i" > C:\DELETE-ALL-4.txt 2>&1 
... same command for other local and network drives. 

는 DELETE - ALL.txt은 다음과 같다 : 이것은 위대한 작품을

mydirectory 
TEST.xlsx 
TEST2.xlsx 

. 단일 디렉토리에있는 파일을 삭제합니다. 하지만 지금은 더 많이 할 필요가 있습니다. 다른 디렉토리에있는 파일을 삭제하려면 배치 파일이 필요합니다. 그래서, 그것은 즉시 디렉토리를 변경하는 방법으로 귀결됩니다.

도움이 될 것입니다.

+2

당신은'@del/q "D : \ HFI \ D : \ mydirectory \ D : \ mydirectory"로 확장되는 명령이 효과가 있다고 생각 하리라 예상합니까? – SomethingDark

+0

감사합니다. 수정 됨. – joehua

+0

[이 문서 (http://stackoverflow.com/questions/38911430/rename-files-using-wildcard-paths/38941888#38941888)를 보길 원할 수도 있습니다. 디렉토리/파일 이름 (와일드 카드 포함)을 입력하고 해당 코드의 이름을 바꿀 수 있습니다. 단지'ren'을'del'으로 바꾸면 당신의 목적에 맞는 것이 틀림 없습니다. 그것은 꽤 크지 만, 그것은 나를 위해 위대한 작품. 끝에있는 in/exclude 하위 폴더의 주석을 확인하십시오. – geisterfurz007

답변

0

대답이 생각보다 쉽습니다. 필자의 원래 질문은 파일을 삭제하는 것이지만 이름을 바꿔야했습니다. 거의 수정하지 않고 삭제 작업을 수행해야합니다.

@(for /f "tokens=1,2 delims=;" %%A in ('"TYPE C:\RENAME-ALL.txt"') do (
@echo "%%A" | find /i "\" 
    @if errorlevel 1 (
    RENAME "%%A" "%%B" >> C:\RENAME-ALL-4.txt 2>&1 
) ELSE (
CD /D D:\mydirectory\%%A 
) 
) 
) 

스크립트는 "\"를 찾습니다. 발견되면 라인이 디렉토리이고 "D : \ mydirectory \"를 경로 접두어로 사용하여 해당 디렉토리로 변경된다고 가정합니다. 그렇지 않으면 라인에 파일 이름이 있다고 가정합니다. 파일 이름에는 백 슬래시가 허용되지 않으므로 가정은 안전합니다.

희망이 있으면 다른 사람들에게 도움이됩니다.

0

나는 나의 낮은 평판으로 지금은 말할 수 없기 때문에 나는 여기에 답한다.

이렇게하려면 PowerShell이나 python 또는 다른 프로그램 스크립트를 사용하는 것이 좋습니다. Windows 배치를 사용하면 좋은 방법을 찾기 위해 더 많은 시간을 필요로하며 이러한 복잡한 미사일을 수행 할 방법이 없을 수 있습니다.

관련 문제