1

我正在使用一个 dos 批处理,它使用传递的参数处理文件:

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

进程.bat:

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

我们可以看到参数被扩展为批处理中的文件名:%~n1. 但是,我被要求重写批处理以从文本文件中读取参数:

参数.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可以帮助我,但看起来很麻烦。

那么有没有其他方法可以将任意变量扩展为名称、驱动器、路径等?

4

1 回答 1

2

是的,那些只适用于特殊的基于数字的参数。但是您可以通过将变量传递给批处理文件中的子例程来将其转换为一个变量。例子:

@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 的名称部分)

于 2010-02-10T16:32:58.023 回答