DOS 배치에서 임의 변수 확장, 경로, 경로 등
-
19-09-2019 - |
문제
전달 된 매개 변수를 사용하여 파일을 처리하는 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의 이름 부분)
제휴하지 않습니다 StackOverflow