원본 스크립트는 다음을 한 줄씩 수행합니다.
@echo on
명령 프롬프트에서 배치 파일의 각 명령을 실행하기 전에 다시 인쇄하도록 지시합니다. 이 작업은 실제로 수행하기 전에 수행중인 작업을 "볼 수"있습니다.
cd "C:\Users\MVD21\Desktop\test"
C의 hanges는 D 난 당신이 모든 파일을 압축 할 경로입니다 무슨 희망으로 irectory.
FOR %%i IN (C:\Users\MVD21\Desktop\test) DO 7z.exe a "%~ni.7z" "%i"
IN
여기에 대한 매개 변수 는 (C:\Users\MVD21\Desktop\test)
입니다. 이 루프의 원인이됩니다 "몸"(키워드 뒤의 조치가 DO
) 실행하세요 회만 으로, %i
값을 할당 매개 변수 C:\Users\MVD21\Desktop\test
. 이것이 당신이 원하는 것을하지 않는 것은 놀라운 일이 아닙니다! 이것이 전체 디렉토리를 단일 .7z 파일로 압축하는 것처럼 보입니다.
아무 것도 하지 않으면 의 경로를 찾을 수 없기 때문일 수 있습니다 7z.exe
. 해당 파일이 현재 디렉토리 ( test
위에서 언급 한 디렉토리)에 없으면 환경 변수 에 있어야합니다 PATH
( 쉘에서 %PATH%
시도 echo %PATH%
하여 현재 설정되어있는 것을보십시오). 그렇지 않으면 7z.exe
현재 디렉토리 로 복사 하거나 디렉토리의 절대 경로를 지정해야합니다 (예 :) "C:\Program Files\7-zip\7z.exe" ...
.
pause
스크립트가 완료되면이 키워드는 셸에서 즉시 프롬프트를 종료하지 않고 Enter 키를 누르거나 명령 프롬프트를 닫을 때까지 기다립니다.
배치 스크립트 (또는 실제로 코드를 다루는 다른 것)를 작성할 때 전체 스크립트를 이해하지 못하는 모 놀리 식 복사 붙여 넣기로 처리하지 말고 대신 개별 부분을 파악한 다음 서로 연결할 수있는 하위 부분에 문제가 있습니다. 이를 통해 문제를 독립적으로 해결 하고 다른 사람에게 귀하의 모든 작업을 요구하지 않고 솔루션을 만들 수 있습니다. 나는 그것을 강력히 추천합니다.
귀하의 경우 문제의 다음과 같은 하위 구성 요소가 있습니다.
- 주어진 디렉토리에 포함 된 각 파일을 반복 (루프 스루)합니다.
- 주어진 각 파일에 대해
7z
유틸리티 를 호출하여 .7z 파일에 넣습니다 .
특정 요구를 해결하는 답변이 이미있을 가능성은 더 일반적인 부분을 개별적으로 찾을 수있는 가능성보다 적습니다.
이 질문은 '배치 스크립트에서 디렉토리의 각 파일에 무언가를 수행하는 방법'은 문제의 절반을 해결합니다.
대답의 추력은 StackOverflow 답변 에서이 부분으로 시작한다는 것입니다.
for /f "usebackq delims=|" %%f in ('dir /b "c:\program files"') do echo %%f
그리고 그것의 부분 변경 뭔가 일을 합니다 ( echo %%f
무엇을 할) 당신이 원하는을 . 스크립트 의 텍스트 를 분석하고 각 문자와 매개 변수의 의미를 이해 했기 때문에 해당 부분을 변경해야한다는 것을 알고 있으므로 내 코드를 삽입하려는 위치를 추론 할 수 있습니다.
다음은 "공기 코드"입니다 (추천되지 않음).
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~ni.7z" "%i"
위 의 @echo on
및 pause
문은 모범 사례이므로 그대로 둘 수 있습니다. cd
파일이 해당 경로에있는 경우 해당 문도 유지하려고 할 수 있습니다.
그래서 우리는 무엇을 떠납니 까?
@echo on
cd "C:\Users\MVD21\Desktop\test"
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~nf.7z" "%f"
pause
"작동하지 않습니다!"라고 응답하면 도움이되지 않습니다. 당신이 시도하고 작동하지 않는 경우, 당신 은 의견에 다음 정보를 알려 주어야 합니다 :
- 이러한 명령을 실행하거나 배치 파일에 넣고 실행할 때 명령 프롬프트에 어떤 정확한 오류 메시지가 표시됩니까? 축약하지 마십시오. 출력을 직접 복사하여 붙여 넣습니다 ( 많은 경우 http://pastebin.com 에 출력 ).
- 당신은 무엇을 생각하는 오류 메시지가 문제가 있음을 말하고있다?
- 7-zip 설치 위치 (파일 경로)는 어디에 있습니까?
- 7-zip 설치의 파일 위치가
PATH
환경 변수 의 내용에 포함되어 있습니까? (위에서 언급 한대로 프롬프트 echo %PATH%
에서 이를 확인하십시오 cmd
.)