在 DOS 批处理中将任意变量扩展到驱动器、路径等
我正在使用 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
可以帮助我,但看起来很麻烦。
那么还有其他方法可以将任意变量扩展为名称、驱动器、路径等吗?
I am using a dos batch which processes file using passed parameter:
process.bat "D:\PROJECT\TEST FILES\test.pdf" 72
process.bat:
gswin32c -r%2 -sDEVICE=jpeg -sOutputFile="%~n1-%%d.jpg" -- "%~1"
We can see that the parameter is expanded to the file name in the batch: %~n1
.
However I was asked to rewrite the batch to read parameters from a text file:
params.txt
1 D:\PROJECT\TEST FILES\test.pdf
2 72
So I have modified the 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"
But %~nP2% doesn't work.
I have found that for /f "tokens=*" %%A in (%P1%) do %%~dA
could help me but it looks cumbersome.
So is there any other way to expand arbitrary variable to a name, drive, path etc.?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这些仅适用于特殊的基于数字的参数。但是您可以通过将变量传递给批处理文件中的子例程来将其转换为变量。示例:
...打印“TEST”(test.pdf 的名称部分)
Yeah, those only work with the special number-based arguments. But you can turn your variable into one by passing it to a subroutine in the batch file. Example:
...prints "TEST" (the name part of test.pdf)