在DOS批处理中将任意变量扩展为驱动器,路径等

时间:2010-02-10 16:26:22

标签: batch-file variable-expansion

我正在使用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可以帮助我,但看起来很麻烦。

还有其他方法可以将任意变量扩展为名称,驱动器,路径等吗?

1 个答案:

答案 0 :(得分:2)

是的,那些只使用基于特殊数字的论点。但是您可以将变量传递给批处理文件中的子例程,从而将变量转换为1。例如:

@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”(test.pdf的名称部分)