배치 파일 인수에서 백분율 기호 (% 및 %%)는 무엇을 의미합니까?


11

이것이 무엇을 의미하는지 알 수 없기 때문에 뭔가 빠진 것 같습니다.

예:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

그 줄은 7zip개별 폴더를 압축 하기 위해 명령 줄 버전을 사용해야 했지만 %%A이 맥락에서 의미 가 무엇인지에 대해 생각 했습니다.



1
명령 줄과 목욕 파일이 혼동되었습니다. 상단의 기호를 변경했습니다.
Jim Kieger

답변:


12

for나중에 쿼리에서 사용하기위한 변수를 함께 전달할 수 있도록 명령이 자리를 필요로, 우리는이 자리 사용할 말하고있다 %A, 당신이 사용을 본 코드는 이유 %%A는 A 배치 파일 내에서 (나는 가정 당신이를 발견 한 곳) 때문입니다 %특별한 의미를 지니고 있으므로 명령에 전달되도록 %%단일 %으로 설정 되도록 두 번 수행해야합니다.for

명령이 수행하는 작업을 실제로 분리하기 위해 명령에는 두 부분이 있습니다.

 for /D %%A in (*) do .....

이 부분은 현재 폴더의 모든 폴더에 대해 다음 명령을 %%A현재 처리중인 폴더 이름으로 바꾸어 실행 합니다.

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

이 부분은 명령을 실행하고 "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"두 개의를 %%A현재 처리중인 레코드로 바꿉니다.


nitpick-for 루프의 / D는 "이 폴더와 모든 하위 폴더의 모든 파일"이 아닌 * 와일드 카드를 디렉토리로 제한합니다 (명령 확장자가 사용 가능하다고 가정).
ernie

@ernie 당신이 맞습니다. 도움말 페이지의 / R 스위치를보고 있었고, 나는 대답을 수정했습니다.
Scott Chamberlain

고마워요. 이것이 얼마나 멍청한 지 보여 주지만, 온라인 매뉴얼을 몇 개 파야하는 것은 꽤 오래된 것입니다.
Jim Kieger

0

변수입니다.

이 특정 예제는 FOR 루프디렉토리 옵션을 사용하여 디렉토리를 반복하고 %% A에 지정합니다.

또한 명령 줄 예제가 아니라 배치 파일 예제입니다. 배치 파일에서는 %% A를 사용해야하지만 명령 줄에서는 % A 만 사용하면됩니다.


0

시나리오에서 %% A는 "for"루프가 반복되는 위치 (/ D는 디렉토리를 나타냄)의 자리 표시 자입니다. 따라서 루프의 각 반복 %% A는 디렉토리 중 하나입니다.

배치 코드에서 % 대신 %%가 표시됩니다. 명령 프롬프트에 %% 대신 %가 사용됩니다.

따라서 배치 파일 코드를 명령 프롬프트에 복사하여 %%를 사용하여 실행하면 오류가 발생하고 그 반대도 마찬가지입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.