문제

전달 된 매개 변수를 사용하여 파일을 처리하는 DOS 배치를 사용하고 있습니다.

process.bat "D:\PROJECT\TEST FILES\test.pdf" 72

process.bat :

gswin32c -r%2 -sDEVICE=jpeg -sOutputFile="%~n1-%%d.jpg" -- "%~1"

매개 변수가 배치의 파일 이름으로 확장되었음을 알 수 있습니다. %~n1. 그러나 텍스트 파일에서 매개 변수를 읽기 위해 배치를 다시 작성하도록 요청 받았습니다.

params.txt

1 D:\PROJECT\TEST FILES\test.pdf
2 72

그래서 나는 수정했다 Process.bat:

for /f "tokens=1,*" %%A in ('type ..\params.txt') do set P%%A=%%B
gswin32c -r%P1% -sDEVICE=jpeg -sOutputFile="%~nP2%-%%d.jpg" -- "%~1"

그러나 % ~ np2 %는 작동하지 않습니다.

나는 그것을 발견했다 for /f "tokens=*" %%A in (%P1%) do %%~dA 나를 도울 수는 있지만 번거롭게 보입니다.

임의의 변수를 이름, 드라이브, 경로 등으로 확장하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

예, 그것들은 특별한 숫자 기반 인수와 만 작동합니다. 그러나 배치 파일의 서브 루틴으로 전달하여 변수를 하나로 바꿀 수 있습니다. 예시:

@echo off
set P1=D:\PROJECT\TEST FILES\test.pdf
call :Split %P1%
echo %FNAME%
exit /b 0

:Split
set FNAME=%~n1
exit /b 0

... 인쇄 "테스트"(Test.pdf의 이름 부분)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top