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

发布于 2024-08-20 13:57:28 字数 740 浏览 7 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水波映月 2024-08-27 13:57:28

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

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

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:

@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

...prints "TEST" (the name part of test.pdf)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文