我使用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